野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11055|回复: 1

关于SPI的数据帧16bit+低位先行

[复制链接]
发表于 2018-12-18 16:52:54 | 显示全部楼层 |阅读模式
#define CHECK_ID_INSTR                0x5A9F                // 00 是一个Dummy信号       
#define DUMMY                                 0x5A5A

static uint16_t SPI_Send_2_Byte(uint16_t data)
{
        uint16_t Timer = 0x1FFF;
        while( SPI_I2S_GetFlagStatus(FLASH_SPI, SPI_I2S_FLAG_TXE) != SET)
        {
                if(Timer-- == 0)
                {
                        SPI_ERROR("Wait For TXE Out Time ERROR_1");
                        return _FAILURE;
                }
        }
        SPI_I2S_SendData(FLASH_SPI, data);
        Timer = 0x1FFF;
        while( SPI_I2S_GetFlagStatus(FLASH_SPI, SPI_I2S_FLAG_RXNE) != SET )
        {
                if(Timer-- == 0)
                {
                        SPI_ERROR("Wait For RXNE Out Time ERROR_2");
                        return _FAILURE;
                }
        }
        return SPI_I2S_ReceiveData(FLASH_SPI);
}

uint32_t SPI_CheckFlashID(void)
{
        uint32_t ID;
        SPI_CS_RESET;
        ID = SPI_Send_2_Byte(CHECK_ID_INSTR);
        ID &= 0xFF00;
        ID <<= 16;
        ID |= SPI_Send_2_Byte(DUMMY);
        SPI_CS_SET;
        return ID;
}

这样输出的FALSH_ID不对,但是我把它改成高位先行,然后还改了一下CHECK_ID_INSTR为0x9F5A,和SPI_CheckFlashID(void)函数里面的ID &= 0xFF00改为ID&=0x00FF;就可以成功的读取到falsh的id了。
搞不懂低位先行怎么改,求指教。

回复

使用道具 举报

发表于 2018-12-19 08:41:21 | 显示全部楼层
初始化结构体里有配置的
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 09:01 , Processed in 0.028432 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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