标题: 关于STM32Mini板spi数据8位字符串读写,如何实现32位整数读写 [打印本页]

作者: jzdcff    时间: 2019-7-31 11:25
标题: 关于STM32Mini板spi数据8位字符串读写,如何实现32位整数读写
用的是原子mini板,案例里读写内容的格式是8位字符串数组

//要写入到W25Q64的字符串数组
const u8 TEXT_Buffer[]={"MiniSTM32 SPI TEST"};
u8 datatemp[SIZE];
读写函数↓
SPI_Flash_Write((u8*)TEXT_Buffer,FLASH_SIZE-100,SIZE);        
SPI_Flash_Read(datatemp,FLASH_SIZE-100,SIZE);        

但是在实际用的时候大部分存储读写的是 32位整数,读写函数只能按照8位传输,请问改如何实现32位整数的读写保存。

作者: artemiszty    时间: 2019-7-31 11:25
将32位数据分为4个8位数据,分别传输,所以传输一个32位数据需要调用四次传输函数
可以使用以下方法实现
uint32 a[19];
uint8 b[4];
uint8 temp,i;
for(i=0;i<19;i++){
    temp = a[i] >> 24;
    b[0] = temp;
    temp = a[i] >> 16;
    b[1] = temp;
    temp = a[i] >> 8;
    b[2] = temp;
    temp = a[i] ;
    b[3] = temp
}
然后发送b   
作者: yzwzfyz    时间: 2019-8-1 08:40
将变量定义成32的,在调函数读写。
作者: 没有你    时间: 2019-8-1 09:21
SPI无法实现单次32位传输,要传输32位,只能分为4次传输
作者: aaaaaa。    时间: 2019-8-1 18:42
yzwzfyz 发表于 2019-8-1 08:40
将变量定义成32的,在调函数读写。

不能这样吧,只能是8位传输
作者: 张恒123    时间: 2019-8-1 21:29
SPI无法实现单次32位传输,要传输32位,只能分为4次传输
作者: 张恒123    时间: 2019-8-1 21:30
SPI无法实现单次32位传输,要传输32位,只能分为4次传输
作者: jzdcff    时间: 2019-8-2 08:06
本帖最后由 jzdcff 于 2019-8-2 10:30 编辑
artemiszty 发表于 2019-8-1 12:43
将32位数据分为4个8位数据,分别传输,所以传输一个32位数据需要调用四次传输函数
可以使用以下方法实现
...

多谢,把int转换成char再执行读写函数,在vs上模拟了下可行        int i = 110;
        char itc[10];
        sprintf_s(itc, "%d", i);  
        printf("%s  \n", itc);
       
        //char数组转int
        sscanf_s(itc, "%u", &i);
        printf("%d  \n", i);






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1