[STM8] STM8 SPI 主模式接收数据奇怪现象

[复制链接]
3116|6
 楼主| shaowei2072009 发表于 2013-6-17 08:20 | 显示全部楼层 |阅读模式
u8 RecByte_Spi(void)
{
  u8 temp;
// SPI->DR = 0xFF;
  while(!(SPI->SR & 0x02)); //等待发送完成,缓冲为空
  while(!(SPI->SR & 0x01)); //等待接收缓冲区非空
  temp = SPI->DR; //数据读回
  return temp;
}


这是我接收数据的程序,现在一直停在等待接收缓冲为非空,把 ( while(!(SPI->SR & 0x01)); //等待接收缓冲区非空)注释掉的话,接收到的数据一直都是MISO第一次接收到的数据。就好像接收缓冲区一直没被清空,昨天做实验的有一次接收到的数据正常,现在又不可以了。。。
aozima 发表于 2013-6-17 09:36 | 显示全部楼层
  1. // SPI->DR = 0xFF;
不输出数据哪来的时钟?
dirtwillfly 发表于 2013-6-17 14:45 | 显示全部楼层
sun1238898 发表于 2013-6-17 17:36 | 显示全部楼层
仿真看下spi寄存器内容,// SPI->DR = 0xFF;可以不被注释掉,然后测试看看。
hkcj 发表于 2013-6-17 20:35 | 显示全部楼层
不是很了解跌说   需要好好查一查   谢谢楼主
 楼主| shaowei2072009 发表于 2013-6-17 22:47 | 显示全部楼层
hkcj 发表于 2013-6-17 20:35
不是很了解跌说   需要好好查一查   谢谢楼主

我也是郁闷啊!模拟的可以通信的,但是用硬件SPI就是不行,数据发送可以,但是MISO的数据接收也是正常的,但是收到RX缓冲里面,好像就没办法更改缓冲器里的值。。现在郁闷中,不知道是不是哪边设置有问题,但是看了手册,好像也没什么配置错误。
zhouhuishu 发表于 2013-10-12 15:48 | 显示全部楼层
问题找到没有?,我的更奇怪 一定要调用库才OK。只写的都有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

108

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部