STM8 SPI 例程 通信出错

本文详细介绍了STM8中SPI通信的特殊之处,并给出了一个具体的发送2字节接收2字节的示例代码。强调了STM8与STM32在SPI通信上的不同,特别是在标志位判断及读取操作上的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【转载注明出处:blog.youkuaiyun.com/lanmanck】

这个STM8的SPI通信也够奇葩的,跟STM32有大区别。光判断发送空和接收空的标志还不行,还必须判断忙标志位,而且读数的时候要等忙标志完毕才能读,废话少说上代码:

这是一段发2字节收2字节的代码,注意如果第二个字节接收才有效的话,也需要发送第二个字节才能提供时钟进行接收:


GPIO_WriteLow(GPIOA, GPIO_PIN_3);

	while (SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET){}
	SPI_SendData(0x80 | 0x75);

	while(SPI_GetFlagStatus(SPI_FLAG_BSY) == SET){}

	while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET){} /* ¸Ã×Ö½Ú¶ªÆú */
	ret1 = SPI_ReceiveData();


	while (SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET){}
	SPI_SendData(0x75);


	while(SPI_GetFlagStatus(SPI_FLAG_BSY) == SET){}

	while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET){}
	ret2 = SPI_ReceiveData();
	GPIO_WriteHigh(GPIOA, GPIO_PIN_3);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值