Thread 中讨论的其他器件:Z-stack、
大家好、
以下是客户的请求:
在 SPI 模式下、读取 U1DBUF 始终为255、在读取之前添加延迟会导致直接崩溃。
客户使用的是 IAR 版本8.10、但没有使用 Z-Stack。 它们 通过 SPI 将 CC2530连接到 BMP280气压传感器、CC2530处于主模式、BMP280处于从模式、并且发送数据正常(使用示波器观察 MOSI 波形)。
但是、读取传感器数据总是错误的、程序如下:
while(1)
{
P1_4 = 0; //Chip select
U1DBUF = 0xD0; //Send BMP280 Chip ID Register Address, read Mode
while( !U1TX_BYTE ); //Wait for transmission to complete
U1TX_BYTE = 0; //Clear the flag bit
//Delay_us(70); //Eight clocks
chip_id = U1DBUF; //Read the BMP280 chip ID
P1_4 = 1;
sprintf(strTemp, " id: %d", chip_id);
LCD_TextOut(0, 1, strTemp);
}
该程序始终读取255的 CHIP_id。使用仅具有一个负脉冲的示波器观察 MISO 波形、然后将芯片选择 P1_4拉高。很明显、CC2530不会获取 MISO 数据。 如果取消注释"delay_us (70);"、即添加延迟、以便 SPI 有足够的时间接收 MISO 数据、则程序被锁定、U1DBUF 的数据似乎没有完全接收、并且已经等待。 无论延迟多长时间、或判断 U1TX_BYTE (接收到的数据就绪标志)、程序都会被锁定。 在此锁定状态下、示波器无法观察 MISO 波形。
您可以帮助检查此案例吗? 谢谢。
此致、
Nick