Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.235.226.14] |
|
Сообщ.
#1
,
|
|
|
void SPI2_Send_byte(U16 data) { while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE)==RESET); - бесконечно тут крутится. Из-за чего это может быть? SPI_I2S_SendData(SPI2,data); while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE)==RESET); SPI_I2S_ReceiveData(SPI2); } Непонятна мне природа этого бага. Это раб никак не запуститься? Или что? Где искать?=) |
Сообщ.
#2
,
|
|
|
У меня немного другой SPI-код для STM'ки был:
void SPI_SendDataToDevice(uintSPI_t nBytesToSend, uint8_t * pDataToSend) { GPIO_WRITE(nSPI_CS_PinID, GPIO_LVL_LOW); // notSS -> 0. while(nBytesToSend--) { // Отправляем байт: SPI_I2S_SendData(SPI_MODULE_NAME, *pDataToSend++); // Ждём, пока передатчик занят: while(SPI_I2S_GetFlagStatus(SPI_MODULE_NAME, SPI_I2S_FLAG_BSY ) == SET); // Ждём приёма байта: while(SPI_I2S_GetFlagStatus(SPI_MODULE_NAME, SPI_I2S_FLAG_RXNE) != SET); // Принимаем байт: SPI_I2S_ReceiveData(SPI_MODULE_NAME); } GPIO_WRITE(nSPI_CS_PinID, GPIO_LVL_HIGH); // notSS -> 1. return; } |
Сообщ.
#3
,
|
|
|
Уже год прошёл!
Всё правильно заинициализировано? Вот пример SPI master (SPL) https://www.mcu.by/%D1%81%D1%82%D0%B0%D1%80...%D1%82%D1%8C-2/ |
Сообщ.
#4
,
|
|
|
Да уж=) Время летит...
Косяк был в хреновой промывке платы. Сейчас появился новый секас, подключение ADF4350... Казалось бы, чего там сложного? По SPI засылаешь что-надо, как в инструкции, и вуаля... а вот хрен там. Молчит зараза... И непропай находили, устранили вроде...Все равно молчит... Но это уже совсем другая история... |