Stm32 spi 从机 抗干扰的解决办法

STM32 SPI当作从机

接了北京一个半导体设备项目,PIC18C老外用汇编写的程序。找我让我转成C语言并移到STM32上面。STM32是从机,发现了问题。

等主机发送来数据,我的程序是这样弄的
SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个数据
retry=0;

timeCnt2=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)//检查指定的SPI标志位设置与否:接受缓存非空标志位
{
	if(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY)==SET)
	{
		delay_us(10);
		timeCnt2++;
		if(timeCnt2>200000)	// 2秒 发现busy信号 2秒了 说明是开机误信号
		{
			return 0X55;	// 返回 55  重新配置 SPI1
		}
		
	}
}	 
一直等主机发送来数据,然后接收主机发来的命令做处理。主机是5V的信号,5V直接连STM32的脚。如果STM32不断电,主机断电。主机在断电的情况下上电,那么会在CLK信号上产生干扰,会导致STM32 SPI接收出错。所以我就用了SPI_I2S_FLAG_BSY
什么是干扰,就是上电瞬间在CLK脚上产生的不确定跳变或毛刺
当发现干扰,SPI_I2S_FLAG_BSY会变成1。2秒内这个干扰一直在,那么肯定是上电导致的干扰。重新初始化SPI1,就是重新配置一下
重新配置如下
SPI_I2S_DeInit(SPI1);		// 复位SPI1
SPI_Slaver_init();			// SPI初始化 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值