Имею проблему с трансивером si4461. Плата с трансивером из фирменного демокита. За основу был взят проект Si446x_BidirectionalPacket из папки с примерами WDS. Микроконтроллер STM32F0. Проблема в том, что не проходит команда POWER_UP в функции Radio_Init(). При ожидании готовности CTS после отправки команды POWER_UP вылетает в таймаут:
CODE
uint8_t radio_comm_GetResp(uint8_t byteCount, uint8_t* pData)
{
uint8_t ctsVal = 0;
uint16_t errCnt = RADIO_CTS_TIMEOUT;
while (errCnt != 0) //wait until radio IC is ready with the data
{
radio_hal_ClearNsel();
radio_hal_SpiWriteByte(0x44); //read CMD buffer
ctsVal = radio_hal_SpiReadByte();
if (ctsVal == 0xFF)
{
if (byteCount)
{
radio_hal_SpiReadData(byteCount, pData);
}
radio_hal_SetNsel();
break;
}
radio_hal_SetNsel();
errCnt--;
}
if (errCnt == 0)
{
while(1)
{
BSP_LED_Toggle(LED_RED);
/* ERROR!!!! CTS should never take this long. */
}
}
if (ctsVal == 0xFF)
{
ctsWentHigh = 1;
}
return ctsVal;
}
При этом команда PART_INFO выполняется без проблем (см. осциллограммы). Аппаратный сброс трансивера также выполняется. Осциллограммы прилагаю. В чем может быть дело? Буду рад любому дельному совету. Спасибо.
Прикрепленные файлы
osc.7z ( 757.86 килобайт )
Кол-во скачиваний: 13