久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

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

求助關(guān)于STM32單片機(jī)SPI+dma傳輸數(shù)據(jù)的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:905498 發(fā)表于 2023-8-23 12:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬好,前面發(fā)過一個(gè)問題了,現(xiàn)在又來麻煩大家了。
就是用STM32F103單片機(jī)驅(qū)動(dòng)24位AD的話,通過硬件SPI,讀取數(shù)據(jù)時(shí)是這樣的:
//讀取24位數(shù)據(jù)
sum |= (SPI2_ReadWriteByte(0xff) << 16);
sum |= (SPI2_ReadWriteByte(0xff) << 8);
sum |= SPI2_ReadWriteByte(0xff);

if (sum & 0x800000)
        {
                sum += 0xFF000000;
        }
  return (int)sum;

就是通過DMA搬運(yùn)到緩沖區(qū)的話,上述該怎么改寫呢?
因?yàn)?strong>24位分成3個(gè)部分通過DMA傳進(jìn)緩沖數(shù)組的話,那不是一個(gè)數(shù)據(jù)分成3個(gè)部分了
我可以在 if (DMA_GetITStatus(DMAx_FLAG_TC) != RESET) 中將三個(gè)部分整合成一個(gè)數(shù)據(jù),
但是在讀取AD數(shù)據(jù)的時(shí)候,我是不是可以直接:
SPI2_ReadWriteByte(0xff) << 16;
SPI2_ReadWriteByte(0xff) << 8;
SPI2_ReadWriteByte(0xff);
去掉sum了
希望各位大佬能夠指點(diǎn)指點(diǎn)迷茫的我,謝謝!如思路有誤或者有更好的辦法請(qǐng)盡情Q我,不勝感激!!!!


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:419968 發(fā)表于 2023-8-23 17:42 | 只看該作者
用聯(lián)合體
union Data
{
        unsigned int  sum;                       
        unsigned char byte[4];               
};
Data.byte[0]=SPI2_ReadWriteByte(0xff);
Data.byte[1]=SPI2_ReadWriteByte(0xff);
Data.byte[2]=SPI2_ReadWriteByte(0xff);
Data.sum 就是讀到的數(shù)了
回復(fù)

使用道具 舉報(bào)

板凳
ID:905498 發(fā)表于 2023-8-23 21:47 | 只看該作者
adject 發(fā)表于 2023-8-23 17:42
用聯(lián)合體
union Data
{

大佬,不是很能明白。
還想i向您請(qǐng)教一個(gè)問題,就是:

1、SPI全雙工的,當(dāng)我用SPI2_ReadWriteByte發(fā)送命令驅(qū)動(dòng)AD的時(shí)候,也會(huì)有相應(yīng)的返回?cái)?shù)據(jù)通過DMA搬運(yùn)進(jìn)緩沖數(shù)組,那我在數(shù)據(jù)處理的時(shí)候該怎么舍棄這些沒用的數(shù)據(jù)啊
2、您給的這個(gè)例子中,聯(lián)合體該放在哪個(gè)位置呢?ad.h中嗎?
還有就是打括號(hào)中定義的 sum 并沒有調(diào)用,為什么Data.sum就是我所需要的一個(gè)24位數(shù)呢?
感覺和提問的最前邊的幾行代碼好像意義相通呢

恕小生愚鈍,還望指點(diǎn)一二,真的非常感謝!
回復(fù)

使用道具 舉報(bào)

地板
ID:744809 發(fā)表于 2023-8-24 20:28 | 只看該作者
小可愛u 發(fā)表于 2023-8-23 21:47
大佬,不是很能明白。
還想i向您請(qǐng)教一個(gè)問題,就是:

聯(lián)合體是共用內(nèi)存空間的,只要把數(shù)據(jù)放進(jìn)byte數(shù)組中,就相當(dāng)于放進(jìn)sum了,但是我看你最高位還判斷了0x800000是不是1,如果是1還得加0xff00000,這部分就得另外實(shí)現(xiàn)了
回復(fù)

使用道具 舉報(bào)

5#
ID:905498 發(fā)表于 2023-8-28 08:57 | 只看該作者
123156fsadf 發(fā)表于 2023-8-24 20:28
聯(lián)合體是共用內(nèi)存空間的,只要把數(shù)據(jù)放進(jìn)byte數(shù)組中,就相當(dāng)于放進(jìn)sum了,但是我看你最高位還判斷了0x800 ...

我前幾天看了一下用法,是的。理解了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品视频一区 | 在线欧美视频 | 国产精品二区三区在线观看 | 久久久久综合 | 免费视频二区 | 久久曰视频 | 四虎成人在线播放 | 国产综合在线视频 | 日韩欧美不卡 | 国产伦精品一区二区三区在线 | 成人不卡 | 黄色91在线 | 久久99精品久久久久久噜噜 | 男人天堂久久久 | 日韩精品成人网 | 亚洲精品免费在线观看 | 成人免费毛片片v | h片在线观看免费 | 成人av免费网站 | 午夜精品一区二区三区在线视频 | 99资源| 日本一区二区三区在线观看 | 天堂一区二区三区四区 | 久久精品国产99国产精品亚洲 | 超碰在线观看97 | 亚洲成人在线视频播放 | www.国产视频 | 激情五月婷婷综合 | 国产一区在线免费观看 | 电影91久久久 | 一区二区三区中文字幕 | 淫片专区| 久久久久久久久国产成人免费 | 欧美精品在线一区二区三区 | 国产aa | 嫩草视频网 | 看毛片网站 | 国产精品欧美一区二区三区不卡 | 国产欧美一级 | 精品国产一区二区国模嫣然 | 国产在线高清 |