Перейти к содержанию
    

SPI в ChibiOS (stm32f4)

Добрый день всем.

Разбираю проект testhal/STM32F4xx/SPI.

В целом все понятно. Настраиваем SPI-контроллер (структура, порт, ...).

НО совсем непонятен один вопрос:

1. Инициализируем структуру

static const SPIConfig hs_spicfg = {
  NULL,
  GPIOB,
  12,
  0
};

Здесь видно, что для SPI-контроллера будет использован порт B, где вывод 12 будет использован как CS(ЧипСелект)

2. В одном из потоков будет использоваться SPI-контроллер 2, и он будет использовать вышеуказанную структуру SPIConfig:

spiStart(&SPID2, &hs_spicfg);

3. В майне есть такие строки:

  /*
   * SPI2 I/O pins setup.
   */
  palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5) |
                           PAL_STM32_OSPEED_HIGHEST);       /* New SCK.     */
  palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(5) |
                           PAL_STM32_OSPEED_HIGHEST);       /* New MISO.    */
  palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5) |
                           PAL_STM32_OSPEED_HIGHEST);       /* New MOSI.    */
  palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL |
                           PAL_STM32_OSPEED_HIGHEST);       /* New CS.      */
  palSetPad(GPIOB, 12);

И вот здесь я в ауте... Как SPI-контроллер 2 узнает, что пин 13 порта В должен использоваться именно как SCK??? И про все остальные пины также.

А если мне нужно будет другие пины назначить на SCK или на MOSI? Например на пине 14 чтобы был SCK, а на 13 MISO.

 

Просмотрел все файлы ОСи и как-то не нашел нигде этого момента, как SPI-контроллеру указать какой именно пин за какую функцию должен отвечать (SCK, MISO, MOSI). Только про CS описано, что он указывается в структуре SPIConfig.

 

ПЛЗ. Помогите разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как SPI-контроллер 2 узнает, что пин 13 порта В должен использоваться именно как SCK???

Это аппаратные ноги SPI2. Они жёстко приделаны.

Когда вы конфигурируете эти ноги под альтернативную функцию SP (PAL_MODE_ALTERNATE(5)), они подключаются к периферийному устройству SPI2.

Произвольные ноги в аппаратном SPI использовать нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. получается, когда указываем, что порт В (например) будет использоваться SPI-контроллером, то к этому контроллеру SPI можно подключить только определенные ноги порта В, конечно при условии использования АФ(5)?

 

Тогда не подскажите, где про эти взаимосвязи выводов портов и SPI-контроллеров (да и не только SPI, но и всех остальных) посмотреть? Т.е. где узнать, какие выводы портов будут задействованы при подключении всяких контроллеров периферии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как ни странно, в даташите на контроллер. Не в reference maulal.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то как-то в ДШ я так и не глянул.

 

Спасибо большое за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один вопрос.

Кто может подсказать, как во время отладки в ChibiStudio контролировать состояние портов?

У меня есть возможность делать это снаружи анализатором, но хотелось бы это делать прям в Студии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...