找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5819|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

關(guān)于STM32Mini板spi數(shù)據(jù)8位字符串讀寫(xiě),如何實(shí)現(xiàn)32位整數(shù)讀寫(xiě)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:544352 發(fā)表于 2019-7-31 11:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
15黑幣
用的是原子mini板,案例里讀寫(xiě)內(nèi)容的格式是8位字符串?dāng)?shù)組

//要寫(xiě)入到W25Q64的字符串?dāng)?shù)組
const u8 TEXT_Buffer[]={"MiniSTM32 SPI TEST"};
u8 datatemp[SIZE];
讀寫(xiě)函數(shù)↓
SPI_Flash_Write((u8*)TEXT_Buffer,FLASH_SIZE-100,SIZE);        
SPI_Flash_Read(datatemp,FLASH_SIZE-100,SIZE);        

但是在實(shí)際用的時(shí)候大部分存儲(chǔ)讀寫(xiě)的是 32位整數(shù),讀寫(xiě)函數(shù)只能按照8位傳輸,請(qǐng)問(wèn)改如何實(shí)現(xiàn)32位整數(shù)的讀寫(xiě)保存。

最佳答案

查看完整內(nèi)容

將32位數(shù)據(jù)分為4個(gè)8位數(shù)據(jù),分別傳輸,所以傳輸一個(gè)32位數(shù)據(jù)需要調(diào)用四次傳輸函數(shù) 可以使用以下方法實(shí)現(xiàn) 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 } 然后發(fā)送b
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:590771 發(fā)表于 2019-7-31 11:25 | 只看該作者
將32位數(shù)據(jù)分為4個(gè)8位數(shù)據(jù),分別傳輸,所以傳輸一個(gè)32位數(shù)據(jù)需要調(diào)用四次傳輸函數(shù)
可以使用以下方法實(shí)現(xiàn)
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
}
然后發(fā)送b   
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2019-8-1 08:40 | 只看該作者
將變量定義成32的,在調(diào)函數(shù)讀寫(xiě)。
回復(fù)

使用道具 舉報(bào)

地板
ID:351097 發(fā)表于 2019-8-1 09:21 | 只看該作者
SPI無(wú)法實(shí)現(xiàn)單次32位傳輸,要傳輸32位,只能分為4次傳輸
回復(fù)

使用道具 舉報(bào)

5#
ID:511461 發(fā)表于 2019-8-1 18:42 | 只看該作者
yzwzfyz 發(fā)表于 2019-8-1 08:40
將變量定義成32的,在調(diào)函數(shù)讀寫(xiě)。

不能這樣吧,只能是8位傳輸
回復(fù)

使用道具 舉報(bào)

6#
ID:592101 發(fā)表于 2019-8-1 21:29 | 只看該作者
SPI無(wú)法實(shí)現(xiàn)單次32位傳輸,要傳輸32位,只能分為4次傳輸
回復(fù)

使用道具 舉報(bào)

7#
ID:592101 發(fā)表于 2019-8-1 21:30 | 只看該作者
SPI無(wú)法實(shí)現(xiàn)單次32位傳輸,要傳輸32位,只能分為4次傳輸
回復(fù)

使用道具 舉報(bào)

8#
ID:544352 發(fā)表于 2019-8-2 08:06 | 只看該作者
本帖最后由 jzdcff 于 2019-8-2 10:30 編輯
artemiszty 發(fā)表于 2019-8-1 12:43
將32位數(shù)據(jù)分為4個(gè)8位數(shù)據(jù),分別傳輸,所以傳輸一個(gè)32位數(shù)據(jù)需要調(diào)用四次傳輸函數(shù)
可以使用以下方法實(shí)現(xiàn)
...

多謝,把int轉(zhuǎn)換成char再執(zhí)行讀寫(xiě)函數(shù),在vs上模擬了下可行        int i = 110;
        char itc[10];
        sprintf_s(itc, "%d", i);  
        printf("%s  \n", itc);
       
        //char數(shù)組轉(zhuǎn)int
        sscanf_s(itc, "%u", &i);
        printf("%d  \n", i);

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表