Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не заводится TWI1 на ATSAM3S4A
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Andreyy
Здраствуйте,
Имеется плата на базе ATSAM3S4A , на шине I2C - M41T00 http://s16.postimg.org/pnt0c22ed/scheme.jpg.
По умолчанию на пинах предназначенные для TWI1 сидит SystemFunction - JTAG (TDI/TDO).
Меняю на PerepheriaA так
ioport_set_pin_mode( PIO_PB4_IDX, PIO_PERIPH_A );ioport_disable_pin( PIO_PB4_IDX );
ioport_set_pin_mode( PIO_PB5_IDX, PIO_PERIPH_A );ioport_disable_pin( PIO_PB5_IDX );
В итоге получаю бесконечный цикл в функции
twi_master_write()
{...while (1) {status = p_twi->TWI_SR;
if (status & TWI_SR_NACK) {return TWI_RECEIVE_NACK;}
if (status & TWI_SR_TXRDY) {break;}}..
}
Если подключить M41T00 к TWI0(и соответственно настроить), то все работает.
Так же я пробовал отключать JTAG - на JTAGSEL подавал 3.3В - не помогло.
Т.е. получается как-будто я неправильно меняю функцию пинов..
ataradov
Не знаю что именно делают те функции, но самый простой метод отключить альтернативные функции - сделать это напрямую:
CODE
MATRIX->CCFG_SYSIO |= CCFG_SYSIO_SYSIO4 | CCFG_SYSIO_SYSIO5 | CCFG_SYSIO_SYSIO6 | CCFG_SYSIO_SYSIO7;

DmitryM
Цитата(ataradov @ Dec 15 2015, 20:34) *
Не знаю что именно делают те функции, но самый простой метод отключить альтернативные функции - сделать это напрямую:
Код
MATRIX->CCFG_SYSIO |= CCFG_SYSIO_SYSIO4 | CCFG_SYSIO_SYSIO5 | CCFG_SYSIO_SYSIO6 | CCFG_SYSIO_SYSIO7;

Эти функции оперируют с PIO, а как совершенно справедливо замечено, для системных требуется ещё Matrix .

Цитата(Andreyy @ Dec 15 2015, 19:41)
Так же я пробовал отключать JTAG - на JTAGSEL подавал 3.3В

Читаем внимательно назначение jtagsel.
Jury093
Цитата(Andreyy @ Dec 15 2015, 19:41) *
twi_master_write()
{...while (1) {status = p_twi->TWI_SR;
if (status & TWI_SR_NACK) {return TWI_RECEIVE_NACK;}
if (status & TWI_SR_TXRDY) {break;}}..
}

а с тем ли блоком регистров вы работаете? - их там два набора..
о тактирование и разрешение работы соответствующего узла не спрашиваю..
Andreyy
Цитата(ataradov @ Dec 15 2015, 21:34) *
Код
MATRIX->CCFG_SYSIO |= CCFG_SYSIO_SYSIO4 | CCFG_SYSIO_SYSIO5 | CCFG_SYSIO_SYSIO6 | CCFG_SYSIO_SYSIO7;

Спасибо, те функции есс-но в матрицу не лазили отключать SYS'ы
Теперь проблема - "Error connecting to device over JTAG" smile3046.gif
Исп-я Jlink v.8, по идее ведь он должен МК при операции ERASE или FLASH сбрасывать,(пробовал к NRST'у мк подключать и TRST и SRST от отладчика)..
ataradov
QUOTE (Andreyy @ Dec 16 2015, 02:15) *
Теперь проблема - "Error connecting to device over JTAG" smile3046.gif
Только пин ERASE в высокий уровень выставлять при подаче питания.

Я еще обычно такие деструктивные операции делаю с задержкой 1-2 секунды, это дает время сбросить проц и стереть память без внешнего воздействия.
Andreyy
Цитата(ataradov @ Dec 16 2015, 12:17) *
Только пин ERASE в высокий уровень выставлять при подаче питания.

Я еще обычно такие деструктивные операции делаю с задержкой 1-2 секунды, это дает время сбросить проц и стереть память без внешнего воздействия.

Чип я обнулил, и тоже задержку сделал - работает, еще раз спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.