初级会员

- 积分
- 79
- 金钱
- 79
- 注册时间
- 2013-8-26
- 在线时间
- 0 小时
|

楼主 |
发表于 2013-9-28 14:24:27
|
显示全部楼层
继续艰苦调试,从机发送的数据,主机死活收不到,请原子兄看一下代码,给点指点。
主机代码:
检测到开发板上的“右键”按下,发送数据给从机
switch (PressedButton)
{
/* JOY_RIGHT button pressed */
case JOY_RIGHT:
recCode = SpiSendByte(0x40);
sprintf(logBuffer, "get: %02x\n", recCode);
LCD_UsrLog(logBuffer);
recCode = SpiSendByte(0x00);
sprintf(logBuffer, "get: %02x\n", recCode);
LCD_UsrLog(logBuffer);
recCode = SpiSendByte(0x00);
sprintf(logBuffer, "get: %02x\n", recCode);
LCD_UsrLog(logBuffer);
recCode = SpiSendByte(0x00);
sprintf(logBuffer, "get: %02x\n", recCode);
LCD_UsrLog(logBuffer);
recCode = SpiSendByte(0x00);
sprintf(logBuffer, "get: %02x\n", recCode);
LCD_UsrLog(logBuffer);
recCode = SpiSendByte(0x95);
sprintf(logBuffer, "get: %02x\n", recCode);
LCD_UsrLog(logBuffer);
。。。。
}
//延时后,试图收到从机的回应:
zero=0;
for(nn=0;nn<200;nn++){
recCode = SpiReadByte();
for( n=0;n<1000;n++){}
if(recCode==0)zero++;
else {
sprintf(logBuffer, "get: %02x\n", recCode);
LCD_UsrLog(logBuffer);
}
}
sprintf(logBuffer, "zero: %d\n", zero);
LCD_UsrLog(logBuffer);
}
//发送一个字节
uint8_t SpiSendByte(uint8_t ch)
{
while(SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPIx, ch);
for( n=0;n<1000;n++){}
while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET){}
return SPI_I2S_ReceiveData(SPIx);
}
//接收一个字节
uint8_t SpiReadByte()
{
while(SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPIx, 0xff);
for( n=0;n<1000;n++){}
while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET){}
return SPI_I2S_ReceiveData(SPIx);
}
结果,从机正确收到了 0x40 0x00 0x00 0x00 0x00 0x95,但是后面收回应数据,一直是0x00
|
|