среда, 23 января 2013 г.

Простой способ работы с I2C в STM32. Часть 2.

В предыдущем посте я кратко описал простой способ работы с протоколом I2C в STM32.
В этом сообщении я добавил несколько ссылок на необходимые файлы и документацию, а также код-примере работы с 
платой Pololu MinIMU-9.

1. Итак, для начала качаем AN2824 "STM32F101xx and STM32F103xx medium- and high-density devices: advanced I²C examples", он же "STM32F10xxx I2C optimized examples" вот отсюда.
Скаченный файл представляет собой архив с примерами работы по протоколу I2C. Распаковываем архив. Если у вас Keil, то вам необходим файл "папка_куда_вы_распаковали_архив\STM32F10x_AN2824_FW_V4.0.0\Project\OptimizedI2Cexamples\MDK-ARM\Optimized I2C examples.uvproj".

Документация здесь.

В файле main.c  находим следующий код.

2. Важные для нас функции:
I2C_LowLevel_Init(I2C1); - инициализируем I2C1 или I2C2
I2C_Master_BufferWrite(I2C1, Buffer_Tx1,1,Interrupt, _ADDRESS); - записываем данные из буфера. 
I2C_Master_BufferRead(I2C1,Buffer_Rx1,1,Polling, _ADDRESS); - читаем данные в буфер.


Читать или писать мы можем тремя способами - Interrupt, Polling или DMA. Все эти функции описываются и реализуются в файлах I2CRoutines.h и I2CRoutines.с (можно посмотреть код реализации).

3. А вот, собственно, и функции для работы с гироскопом, акселерометром и магнитометром. Вначале устройства инициализируются, затем происходит чтение данных в переменные x,y,z. 
Вот и сам код: http://pastebin.com/70rhVxNF



1 комментарий: