单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 241|回复: 7
打印 上一主题 下一主题
收起左侧

关于STM32Mini板spi数据8位字符串读写,如何实现32位整数读写

[复制链接]
跳转到指定楼层
#
jzdcff 发表于 2019-7-31 11:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
15黑币
用的是原子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位整数的读写保存。

最佳答案

查看完整内容

将32位数据分为4个8位数据,分别传输,所以传输一个32位数据需要调用四次传输函数 可以使用以下方法实现 uint32 a[19]; uint8 b[4]; uint8 temp,i; for(i=0;i> 24; b[0] = temp; temp = a >> 16; b[1] = temp; temp = a >> 8; b[2] = temp; temp = a ; b[3] = temp } 然后发送b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶1 踩
7#
 楼主| 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);

6#
张恒123 发表于 2019-8-1 21:30 | 只看该作者
SPI无法实现单次32位传输,要传输32位,只能分为4次传输
5#
张恒123 发表于 2019-8-1 21:29 | 只看该作者
SPI无法实现单次32位传输,要传输32位,只能分为4次传输
地板
aaaaaa。 发表于 2019-8-1 18:42 | 只看该作者
yzwzfyz 发表于 2019-8-1 08:40
将变量定义成32的,在调函数读写。

不能这样吧,只能是8位传输
板凳
没有你 发表于 2019-8-1 09:21 | 只看该作者
SPI无法实现单次32位传输,要传输32位,只能分为4次传输
沙发
yzwzfyz 发表于 2019-8-1 08:40 | 只看该作者
将变量定义成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   
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

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