OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4427|回复: 2

对SPI外设写多个字节数据失败 我这个函数有问题?

[复制链接]

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
发表于 2015-4-22 12:56:47 | 显示全部楼层 |阅读模式
5金钱
//一次写入多个字节    这个函数有问题
u8 SPI_RC522_WriteBytes(u8 *pBuffer,u8 NumByteToWrite)
{
u8 retry=0;
while(NumByteToWrite--)
{
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET)
{
retry++;
if(retry>20000)return 0;
}
SPI_I2S_SendData(SPI2,*pBuffer++);
retry = 0;
}
return 1;
}

我是一只菜鸟,但我会大鹏展翅
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
 楼主| 发表于 2015-4-22 13:01:48 | 显示全部楼层
我加了接收部分就好了  如下
u8 SPI_RC522_WriteBytes(u8 *pBuffer,u8 NumByteToWrite)
{
u8 retry=0;
while(NumByteToWrite--)
{
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET)
{
retry++;
if(retry>20000)return 0;
}
SPI_I2S_SendData(SPI2,*pBuffer++);
retry = 0;
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET)  /* Wait to receive a byte */;
   SPI_I2S_ReceiveData(SPI2)  /* Return the byte read from the SPI bus */; 
}
return 1;
}

但是不理解的是我的目的是对外写数据,为什么最后接收一下数据呢
我是一只菜鸟,但我会大鹏展翅
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-4-22 13:04:46 | 显示全部楼层
SPI的接收时钟还是要靠Master来产生的,所以发送数据后再发送不相关的数据,SPI产生时钟,Salve才会把返回的数据发过,Master才会接收到
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 12:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表