Bluenrg-ms/stm32F4: пакет Hci через spi
Я работаю над проектом по развитию связи, но у меня возникли проблемы с инициализацией и пониманием кадра возврата из ble.
После снижения cs, тестирования заголовка (0x0A,0x00,0x00,0x00,0x00) и отправки сразу после hci_reset (0x01,0x03,0x0C,0x00) с HAL_SPI_TransmitReceive, я хочу прочитать возвращаемое значение из ble.
Итак, понижая cs еще раз, тестируем заголовок (0x0B,0x00,0x00,0x00,0x00) и отправляем фиктивные данные с HAL_SPI_TransmitReceive. Я получаю этот кадр: 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00.
Но из того, что я понял так далеко, я должен получить что-то вроде:0x04,0x0E,0x04,0x01,0x03,0x0C,0x00.
Может кто-нибудь указать, где я не прав?
2 ответа
Вы всегда должны начинать сначала сбрасывать bluenrg: это приведет к тому, что bluenrg вызовет прерывание. Непонятно, как ведет себя без хард ресет.
Почти решено.
На самом деле я изменил некоторые моменты в моем коде и, наконец, получил данные из ble, соответствующие тому, чего я ждал.
Раньше я закрывал фрейм после получения правого заголовка от ble. Затем посылает заголовок команды записи следует в команде.
Это процедура, которую я применил: Информационная коммуникация spi (запись): • открыть CS • отправить header_master[5]={0x0a,0,0,0,0} в TransmitReceive • if header_slave[0]=0x02 и header_slave[1]>0 • отправить команды • закрыть CS • еще • закрыть CS • перейти к открытию CS
Информационная коммуникация spi (чтение): • дождитесь exti from ble • Open CS • отправьте header_master[5]={0x0b,0,0,0,0} в TransmitReceive • if header_slave[0]=0x02 и header_slave[3]>0 â — ¦ манекены send (header_slave[3]) â — ¦ закрыть CS â € else â — ¦ закрыть CS â — ¦ перейти к открытию CS
Надеюсь, что это поможет некоторым людям.
Теперь я столкнулся с другой проблемой. Я не получаю прерывание после отправки команды, поэтому я выполняю опрос, чтобы поймать нужный мне кадр. Любое решение?