我用STM32F103驱动Si4432模块,在死机的时候重新初始化模块,就是不行。我的部分程序如下:
每隔2秒检测一下模块是否处于接收状态,如果res=0x21,则模块处于接收状态,否则认为是死机状态。
if(count==2000)
{
count=0;
res = SI4432_ReadReg(0x02);
printf("res =%02x
",(unsigned short)res );
if(res!=0x21)
{
flag_buffer=1;
}
}
在main函数中:
main()
{
SI4432_SDN_HIGH;
si4432_reset();
si4432_init();
while(1)
{
if(flag_buffer==1)
{
flag_buffer=0;
SI4432_SDN_HIGH;
si4432_reset();
si4432_init();
}
}
}
void si4432_reset(void)
{
SI4432_SDN_HIGH; //拉高模块停止工作
delay_ms(10);
SI4432_SDN_LOW; //拉低模块开始工作
}
现象就是,当模块死机后,还是不能重新复位,有谁能解释吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
Delay_NOP(500);
SI_SDN_LOW(SI4463);
Delay_NOP(200);
SI_CSN_HIGH(SI4463);
這是我之前有在用的RESET流程 試看看吧
---------------------------------
能判断死机和重新复位吗?
---------------------------------
就算是新版SI4463也有死机的问题,我们要从源头把死机问题解决,不管哪个无线我们都要处理死机的问题呀,您说呢
一周热门 更多>