Argon (16.08.2006 07:21, просмотров: 3576)
i2c LPC2148 столкнулся с проблемой взаимосвязи LPC2148 и i2c EEPROM и RTC.
Процедура чтения ячейки с произвольным адресом со стороны LPC:
1. старт
2. передать адрес slave с битом "запись"
3. передать адрес внутри устройства
4. снова старт
5. передать адрес slave с битом "чтение"
6. получить данные.
Проблема странного характера в том, что после п. 5 возникает состояние потеря шины 0x38 в LPC.
Причем это возникает примерно 1 раз в 500 чтений.
Изначально заметил это при редком ошибочном чтении времени с RTC.
Затем для тестирования зациклил чтение из одной ячейки EEPROM.
Прерывания и всю прочую периферию отключил.
i2c процедуры основаны не на прерываниях, а на опросе флагов.
Осциллом наблюдаются очень короткие пички на линии SDА в казалось бы произвольные моменты времени. Но иногда кажется, что у них есть период около 10 кГц. Нигде залипаний на печатной плате нет. Линии SDA и SCL идут только на 24LC64 и DS1307.
i2c контроллер настроен на 100 кГц.
Переключений портов на вход-выход и вообще работы с портами нет (кроме инициализации, конечно).
Может, Errata есть на эту тему? Сам пока не нашел...