Как запрограммировать датчик давления с помощью шины SPI - PullRequest
0 голосов
/ 03 мая 2018

Я использую микроконтроллер STM32 (как часть узла LoRa MB1296D). Я хочу подключить датчик давления (MS5803) к узлу LoRa и запрограммировать датчик через шину SPI. По сути, это все очень ново для меня, поэтому я посмотрел пример кода

Я пытаюсь понять этот код, и возникла пара вопросов:

  • макросы, которые определены в самом начале, каково их назначение, и являются ли шестнадцатеричные числа, присущие используемому микроконтроллеру? - Если бы мне пришлось писать код с нуля, я решил, что начну с определения макросов для выводов GPIO, соответствующих SPI_SCK, SPI_MISO и SPI_MOSI
  • функция unsigned long cmd_adc(char cmd) содержит команду переключения, которую я совершенно не знаю, что делает. Я имею в виду, что мне кажется, что я пытаюсь установить разрешение АЦП, но как мне узнать соответствующую задержку и почему команда switch содержит 0x0f?

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

1 Ответ

0 голосов
/ 03 мая 2018

Ваши вопросы являются базовыми вопросами программирования на C и не являются специфическими для данного датчика давления или примера.

Макросы определяются шестнадцатеричными числами, чтобы было ясно, что значения представляют битовые поля. Очень просто (и для разработчиков встраиваемых программ это вторая природа) преобразовать шестнадцатеричный код в двоичный. Прочитайте описания регистров в таблице данных датчика. Биты, установленные в шестнадцатеричных значениях, будут соответствовать значимым битам в описании регистра датчика.

switch (cmd & 0x0f) выполняет побитовое И cmd с 0x0f. В шестнадцатеричном значении 0x0f установлены четыре младших значащих бита. Таким образом, код игнорирует (то есть маскирует или обнуляет) четыре старших значащих бита cmd и рассматривает только четыре младших значащих бита значения cmd.

...