中级会员
 
- 积分
- 365
- 金钱
- 365
- 注册时间
- 2018-3-21
- 在线时间
- 64 小时
|
1金钱
使用了sx1278的lora模块,初始化之后,还没有进行相关的配置,只是做了SPI,NSS,IO口,复位reset的初始化之后,我想读取一个版本号,结果发现读取回来的数据一直为0.
代码如下
void SX1276_Init( void )
{
uint8_t TempReg,TempReg1,TempReg2;
char errorNum;
//SX1276LR=(tSX1276LR*)SX1276Regs;//初始化LoRa寄存器结构
SX1276_Init_IO( ); //SX1276的IO口初始化 ,CS SPI
SX1276_Reset( ); //重置SX1276
while(1)
{
SX1276Read(0x06,&TempReg); //用于测试spi是否能读写数据
if(TempReg != 0x6C)
{
errorNum++;
if(errorNum==10)
errorNum=0;
//udelay(500000);
}
if(TempReg == 0x6C)
{
errorNum = 0;
//udelay(500000);
}
//udelay(100000);
SX1276Read(0x42,&TempReg1); //用于测试spi是否能读写数据
//udelay(100000);
SX1276Read(0x44,&TempReg2); //用于测试spi是否能读写数据
//udelay(100000);
Feed_WatchDog();
}
}
void SX1276_Reset( void )
{
//uint32_t startTick;
SX1276SetReset( RADIO_RESET_ON );
//等待1ms
udelay(1000);
SX1276SetReset( RADIO_RESET_OFF );
//等待6ms
udelay(6000);
}
uint8_t SPI2_ReadWriteByte(uint8_t outData)
{
#if 1
/* 等待发送寄存器空 */
while((SPI2->SR & SPI_SR_TXE) == (uint32)RESET);
/* 数据发送 */
*(__IO uint8 *)&SPI2->DR = outData;
/* 等待数据接收 */
while((SPI2->SR & SPI_SR_RXNE) == (uint32)RESET);
/* 接收数据返回 */
return *(__IO uint8 *)&SPI2->DR;
#else
uint8_t Rxdata;
HAL_SPI_TransmitReceive(&hspi2, &outData, &Rxdata, 1, 1000);
return Rxdata;
#endif
}
我现在只是读取版本号之类的应该不会出现0,我参考了被人写的,应该spi初始化之后就可以读取版本号了,麻烦知道的能帮忙指教一下
|
|