STM32 SPI 8位模式下怎么读取出16位的SPI数据

2019-10-15 08:01发布

最近在弄ILI9341触摸屏,发现他的SPI是读取16位数据,而我W25Q80和LCD屏要共用一个SPI,W25Q80是8位的SPI数据,这可就蛋疼死我了,原先我是想将SPI初始化成8位模式,然后读取16位数据时,连续读取2次,但是我怎么读,都不正确,搞不懂这8位模式下,是要怎么连续读取2次的,好头疼!!不知道原子哥咋解决啊!!很急!!我用的硬件SPI
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
lvkanger
1楼-- · 2019-10-17 00:38
 精彩回答 2  元偷偷看……
GS1101923161
2楼-- · 2019-10-17 03:55
lvkanger 发表于 2017-1-11 16:19
建议你最好先把数据一个一个读出来,保存并打印出来,先不要做移位的操作,只看SPI得到的3个数据是什么! ...

数据对比是这样的
QQ截图20170111191902.png
lvkanger
3楼-- · 2019-10-17 08:29
int i;
u8 rcv_buf[3] = {0};
u8 send_buf[3]={CMD,0xFF,0xFF};
for(i = 0;i < 3;i++)
{
    rcv_buf[i] = SpiReadWriteByte(send_buf[i]);
}
printf("%02X %02X %02X ",rcv_buf[0],rcv_buf[1],rcv_buf[2]);
你这样试试
GS1101923161
4楼-- · 2019-10-17 11:58
lvkanger 发表于 2017-1-12 08:51
int i;
u8 rcv_buf[3] = {0};
u8 send_buf[3]={CMD,0xFF,0xFF};

因为CMD是个变量不能用于初始化,所以我稍微改了下,但结果还是一样
QQ截图20170112101647.jpg
lvkanger
5楼-- · 2019-10-17 16:44
GS1101923161 发表于 2017-1-12 10:19
因为CMD是个变量不能用于初始化,所以我稍微改了下,但结果还是一样

第一个数据是0是对的,因为那个字节没有用,后边两个字节就是你要用的16位数据
lvkanger
6楼-- · 2019-10-17 20:00
 精彩回答 2  元偷偷看……

一周热门 更多>