Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SPI в ChibiOS (stm32f4)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
billidean
Добрый день всем.
Разбираю проект 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.

ПЛЗ. Помогите разобраться.
AHTOXA
Цитата(billidean @ Oct 6 2014, 11:50) *
Как SPI-контроллер 2 узнает, что пин 13 порта В должен использоваться именно как SCK???

Это аппаратные ноги SPI2. Они жёстко приделаны.
Когда вы конфигурируете эти ноги под альтернативную функцию SP (PAL_MODE_ALTERNATE(5)), они подключаются к периферийному устройству SPI2.
Произвольные ноги в аппаратном SPI использовать нельзя.
billidean
Т.е. получается, когда указываем, что порт В (например) будет использоваться SPI-контроллером, то к этому контроллеру SPI можно подключить только определенные ноги порта В, конечно при условии использования АФ(5)?

Тогда не подскажите, где про эти взаимосвязи выводов портов и SPI-контроллеров (да и не только SPI, но и всех остальных) посмотреть? Т.е. где узнать, какие выводы портов будут задействованы при подключении всяких контроллеров периферии?
Genadi Zawidowski
Как ни странно, в даташите на контроллер. Не в reference maulal.
billidean
Что-то как-то в ДШ я так и не глянул.

Спасибо большое за помощь.
billidean
Еще один вопрос.
Кто может подсказать, как во время отладки в ChibiStudio контролировать состояние портов?
У меня есть возможность делать это снаружи анализатором, но хотелось бы это делать прям в Студии.
billidean
Всё, нашел.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.