求助解释spi的代码

2019-07-21 08:45发布

void W25QXX_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead)   
{
  u16 i;                 
W25QXX_CS=0;                             //使能器件   
    SPI2_ReadWriteByte(W25X_ReadData);          //发送读取命令   
    SPI2_ReadWriteByte((u8)((ReadAddr)>>16));   //发送24bit地址   
    SPI2_ReadWriteByte((u8)((ReadAddr)>>8));   
    SPI2_ReadWriteByte((u8)ReadAddr);   
    for(i=0;i<NumByteToRead;i++)
{
        pBuffer=SPI2_ReadWriteByte(0XFF);    //循环读数  红 {MOD}的这个函数是读写数据,0XFF指的是要读取的字节位数还是字节本身?
    }
W25QXX_CS=1;                 
}  
红 {MOD}字体所疑所问

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
jermy_z
1楼-- · 2019-07-21 11:57
 精彩回答 2  元偷偷看……
jermy_z
2楼-- · 2019-07-21 17:53
论坛里以前有解释多次,想详细了解的话,自己多搜搜吧
八度空间
3楼-- · 2019-07-21 23:12
0xFF这个数据可以发送任意的,你发送0x00也是可以了,但是为了避免部分芯片不必要的麻烦,其他数据造成读取的数据错误,所以发送0xFF,将MOSI管脚拉高
edmund1234
4楼-- · 2019-07-22 03:39
这spi是个全双工的模式下工作的, 即同时收也同时发, 实际上是没有只读模式, 只读模式也只是发送的数据忽视它, 但必须是同时收发, 所以要读的同时是要发, 既然发送的数据最终是会被忽视, 那就随便发什么也没什么, 习惯上发0xFF
Acuity
5楼-- · 2019-07-22 06:20
SPI的读写模式包括:
1)先写后读,比如读寄存器,存储地址等;
2)先写后写,比如写寄存器,存储地址等;
3)写和读同时,一般是非标SPI器件;
4)只读/只写。
权威解析:楼主案例属于“1”。SPI总线时钟由主机控制,这个操作只是产生用于读数据的时钟信号,函数参数可以填任意值。
Ckeai
6楼-- · 2019-07-22 09:34
 精彩回答 2  元偷偷看……

一周热门 更多>