Проблема переноса драйвера I2C

Я переношу драйвер I2C с Atmel AVR32 U3 на устройство Energy Micro EFM32GG Cortex-M3. Драйвер использует BSP Atmel для связи с шиной I2C, предоставляя ей адрес ведомого устройства, адрес регистра и данные.

Energy Micro BSP не реализует адрес регистра. Мой вопрос: в соответствии со стандартным протоколом I2C, могу ли я просто добавить адрес регистра в качестве первого байта отправляемых данных?


person stdcall    schedule 10.11.2012    source источник
comment
Вы должны точно указать, какой процессор вы используете. Вы, вероятно, правы, что можете просто поставить адрес в начале ваших данных. Но модель использования должна быть очень четко прописана в руководстве пользователя вашего процессора.   -  person TJD    schedule 11.11.2012
comment
@TJD это ARM cortex M3 - гигантский геккон EFM32   -  person stdcall    schedule 11.11.2012
comment
@Mellowcandle: В вопросе, а не в комментарии - я отредактировал его для вас.   -  person Clifford    schedule 11.11.2012


Ответы (1)


Хотя протокол I2C стандартизирован, периферийные устройства I2C вряд ли будут идентичными (или даже похожими) у разных поставщиков. Хотя может быть полезно сохранить API из вашей реализации Atmel — для переносимости кода вашего приложения — вам, вероятно, придется полностью изменить базовую реализацию.

справочное руководство с вашей стороны подробно описывает интерфейс регистрации и аппаратная работа его периферийного устройства I2C. Вы увидите, что он имеет мало общего с соответствующим периферийным устройством Atmel, кроме общего сходства из-за самого протокола I2C. Кроме того, реализация DMA будет различаться между частями, поэтому драйвер также будет отличаться.

У Energy Micro есть примечание по применению I2C< /a> с исходным кодом C. Вот с этого, пожалуй, и следует начать.

person Clifford    schedule 11.11.2012