打印

stm32的SPI发送接收的问题

[复制链接]
7764|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dong130300|  楼主 | 2012-4-22 08:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据手册上说,当SPI发送完一个数据之后会返回一个数据,数据的发送和接收是同步的,那如果我在SPI的发送函数中发送一个其他芯片寄存器的地址,那么返回的应该是一个什么值
如果我在发送函数中发送0,那么得到的值,是不是就相当于是读这个寄存器的数据
u8 SPI_Send_Byte(u8 dat)
{
/* Loop while DR register in not emplty */
while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) == RESET);

/* Send byte through the SPI2 peripheral */
SPI_SendData(SPI2, dat);

/* Wait to receive a byte */
while(SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE) == RESET);

/* Return the byte read from the SPI bus */
return SPI_ReceiveData(SPI2);
}
这是发送函数,如果reg是一个外围芯片的寄存器地址那么u8 SPI_Send_Byte(reg)返回的是什么值
u8 SPI_Send_Byte(0)返回的是什么值
沙发
airwill| | 2012-4-22 09:10 | 只看该作者
返回的是什么值,
1. 取决于你的连接, MISO 有没有连接到适当的返回信号上;
2. 取决于那个相连接的外设或器件. 你应该找 SPI 相连的那个器件资料.

使用特权

评论回复
板凳
dong130300|  楼主 | 2012-4-22 10:15 | 只看该作者
**作的是nrf24l01, 我看了别人写的一个程序

u8 SPI_Read_Buf(u8 reg, u8 *pBuf, u8 Len)
{
        uint status,i;
       
        CSN_L();                                    // Set CSN low, init SPI tranaction
        status = SPI_Send_Byte(reg);      
       
  for(i=0;i<Len;i++)
  {
     pBuf[i] = SPI_Send_Byte(0);
  }
       
        CSN_H();                           
       
        return(status);                    // return nRF24L01 status u8
}
这里是SPI读数据的程序,我感觉status = SPI_Send_Byte(reg); 是为了找到寄存器的地址, SPI_Send_Byte(0); 是为了将寄存器中的数据读出,但我不知道返回值为什么是status,我感觉应该是pbuf[i]啊,我感觉操作NRF24l01不是很容易啊

使用特权

评论回复
地板
acgean| | 2012-4-23 08:26 | 只看该作者
同意二楼的分析,返回值该是什么, 还是看 nRF24L01 资料上的说明吧。

使用特权

评论回复
5
LAORUAN| | 2012-4-23 12:00 | 只看该作者
支持二楼。

使用特权

评论回复
6
jinguoju| | 2012-4-23 22:25 | 只看该作者
二楼说的很对,我之前用过芯科的芯片,你LZ分析的那样。

使用特权

评论回复
7
香水城| | 2012-4-24 09:53 | 只看该作者
请LZ先学习一下什么是SPI,SPI的工作原理是什么。你的问题表明你没有这些基础知识。

使用特权

评论回复
8
lllaaa| | 2012-4-24 11:06 | 只看该作者
本帖最后由 lllaaa 于 2012-4-24 11:07 编辑

SPI master slave各有一个8bit位移寄存器。master通过MOSI向slave写入8bit数据的时候,会把slave上面位移寄存器的值一个bit一个bit的挤到MISO这条线上来。从而读取到slave上面那个寄存器的值。所以一般读取的时候会写个无关紧要的值0xff。
所以spi的读写是同步进行的。要读数据必须用另一个数据去挤出来。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
香水城 + 2 基础很重要!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

35

帖子

0

粉丝