0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MCP3421-18bit ADC調(diào)試方案

云深之無(wú)跡 ? 來(lái)源:云深之無(wú)跡 ? 2023-10-19 09:25 ? 次閱讀

MicroChip芯片手冊(cè)真的好看,恨不得都做筆記,今天這篇文章先對(duì)IIC協(xié)議進(jìn)行了一個(gè)回顧,針對(duì)具體的數(shù)據(jù)手冊(cè)逐位描述。

后面就是STM32的工程,以及一個(gè)數(shù)據(jù)處理上面的運(yùn)算。

5塊錢性價(jià)比真的很高

時(shí)鐘的高電平周期內(nèi),SDA線上的數(shù)據(jù)必須保持穩(wěn)定,數(shù)據(jù)線僅可以在時(shí)鐘SCL為低電平時(shí)改變。

2f366a40-6e1e-11ee-939d-92fbcf53809c.png

SCL高的時(shí)候,DATA是要穩(wěn)定讀取的

2f4abba8-6e1e-11ee-939d-92fbcf53809c.png

每次都是8位的數(shù)據(jù)一個(gè)字節(jié),+讀寫+ACK

2f6add8e-6e1e-11ee-939d-92fbcf53809c.png

高->低

2f6ec8f4-6e1e-11ee-939d-92fbcf53809c.png

前面的1101,是固定的電平,也叫器件碼。后面的A2,A1,A1,是000,閉合圖形的意思大概是固定的。

2f9587be-6e1e-11ee-939d-92fbcf53809c.png

2f998a4e-6e1e-11ee-939d-92fbcf53809c.png

一次傳輸一個(gè)字節(jié),那么最后就是一個(gè)第九位,為0的時(shí)候是ACK收到

2fc98726-6e1e-11ee-939d-92fbcf53809c.png

前面的7位為地址碼,第八位是寫入標(biāo)志,第九位是回復(fù)

在總線的一次數(shù)據(jù)傳輸過(guò)程中,可以有以下幾種組合方式:

[1]主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過(guò)程中不變:

2fcd39c0-6e1e-11ee-939d-92fbcf53809c.png

注:有陰影部分表示數(shù)據(jù)由主機(jī)向從機(jī)傳送,無(wú)陰影部分則表示數(shù)據(jù)由從機(jī)向主機(jī)傳送。

A表示應(yīng)答(低電平), A非表示非應(yīng)答(高電平)。S表示起始信號(hào),P表示終止信號(hào)。

[2]主機(jī)在第一個(gè)字節(jié)后,立即從從機(jī)讀數(shù)據(jù):

2fe62bf6-6e1e-11ee-939d-92fbcf53809c.png

[3]在傳送過(guò)程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫方向位正好反相:

2ffd2bda-6e1e-11ee-939d-92fbcf53809c.png

3018b5da-6e1e-11ee-939d-92fbcf53809c.png

我來(lái)說(shuō)一個(gè)這個(gè)18位是什么意思,一個(gè)數(shù)據(jù)有18位,除去別的樣板數(shù)據(jù)。我們知道這個(gè)18bit的數(shù)據(jù)就是18個(gè)2進(jìn)制位置,紅色的部分,D0-D17就是18個(gè)也就是說(shuō)18位的數(shù)據(jù)都是傳輸完整了,LSB就是D0,數(shù)據(jù)從這里開(kāi)始。接著從右往左排列三個(gè)時(shí)鐘周期,一個(gè)完整的應(yīng)該是9位,前兩個(gè)數(shù)據(jù)位滿滿的,第三個(gè)用了兩位,最后的數(shù)據(jù)位怎么辦?因?yàn)槭沁B續(xù)完整的,所以這里的做法就是把剩下的位置都補(bǔ)18位數(shù)據(jù)的MSB,就是最后一個(gè)數(shù)字,我們忽略就可以。

30511d26-6e1e-11ee-939d-92fbcf53809c.png

這個(gè)就是說(shuō)你是12或者是14的情況下,也是有多余的位置沒(méi)有傳輸

30552f42-6e1e-11ee-939d-92fbcf53809c.png

這是低位數(shù)下的傳輸

30742d16-6e1e-11ee-939d-92fbcf53809c.png

3077f9aa-6e1e-11ee-939d-92fbcf53809c.png

309a6882-6e1e-11ee-939d-92fbcf53809c.png

30a53a28-6e1e-11ee-939d-92fbcf53809c.png

IIC的輸入輸出結(jié)構(gòu)采用的是開(kāi)漏的結(jié)構(gòu)。

開(kāi)漏結(jié)構(gòu)不能夠自主得到高電平,所以需要通過(guò)外部上拉電阻Rp來(lái)的實(shí)現(xiàn)IIC通信過(guò)程中的高電平。

Rp的大小取決于IIC不同模式時(shí)的灌電流大小。

由于種類的設(shè)備都有可能連接到IIC總線上面,比如說(shuō)CMOS、NMOS等,所以IIC的高電平和低電平的標(biāo)準(zhǔn)是不一定的。高電平和低電平的值分別為0.7VDD和0.3VDD。

30be7a88-6e1e-11ee-939d-92fbcf53809c.png

應(yīng)答位、非應(yīng)答位:當(dāng)主機(jī)傳送8位數(shù)據(jù)結(jié)束后,主機(jī)會(huì)將SDA線拉高,此時(shí)如果從機(jī)正確接收數(shù)據(jù)則會(huì)將SDA拉低并在SCL高電平時(shí)保持低電平,這個(gè)信號(hào)為ACK信號(hào)。如果在傳輸8位數(shù)據(jù)后從機(jī)沒(méi)有將SDA拉低則該信號(hào)為NACK。如果出現(xiàn)NACK則表示數(shù)據(jù)傳輸出錯(cuò)。

30da56ae-6e1e-11ee-939d-92fbcf53809c.png

是主動(dòng)拉低的意思

數(shù)據(jù)有效性:當(dāng)時(shí)鐘信號(hào)為高電平的時(shí)候,數(shù)據(jù)線上的信號(hào)需要保持不變也就是在時(shí)鐘線為高電平的時(shí)候數(shù)據(jù)線出現(xiàn)上升下降沿的話就會(huì)產(chǎn)生停止和啟動(dòng)信號(hào),從而導(dǎo)致數(shù)據(jù)的傳輸出錯(cuò)。

30f4870e-6e1e-11ee-939d-92fbcf53809c.png

byte:SDA上的數(shù)據(jù)傳輸是以8bit即一個(gè)字節(jié)為單位傳輸?shù)模恳淮蝹鬏數(shù)淖止?jié)數(shù)沒(méi)有限制,每傳輸完一個(gè)字節(jié)后必須跟隨一個(gè)應(yīng)答位。 我們以01001001(0X49)為例,其時(shí)序圖如下:

311159b0-6e1e-11ee-939d-92fbcf53809c.png

寫操作:主機(jī)確定了從機(jī)的設(shè)備地址后,生成一個(gè)開(kāi)始信號(hào),然后向IIC總線上面發(fā)送設(shè)備的地址和讀寫方向標(biāo)志。從機(jī)檢測(cè)到該地址和自己設(shè)備地址相對(duì)應(yīng)后,回復(fù)主機(jī)一個(gè)應(yīng)答信號(hào)。主機(jī)接收到應(yīng)答信號(hào)后就開(kāi)始向這個(gè)設(shè)備以字節(jié)為單位發(fā)送數(shù)據(jù),每一個(gè)字節(jié)后面都會(huì)帶有從機(jī)的應(yīng)答信號(hào),直到主機(jī)發(fā)送完成最后一個(gè)數(shù)據(jù)后生成一個(gè)停止信號(hào)結(jié)束此次數(shù)據(jù)的傳輸。

3114fd18-6e1e-11ee-939d-92fbcf53809c.png

寫就是主機(jī)一直搗鼓,后來(lái)問(wèn)下從機(jī),逼崽子聽(tīng)見(jiàn)沒(méi)有

3128db76-6e1e-11ee-939d-92fbcf53809c.png

讀操作:讀操作與寫操作有一些類似,同樣的是需要確定需要讀取的從設(shè)備的地址。然后主機(jī)生成開(kāi)始信號(hào),再向IIC總線上發(fā)送從設(shè)備的地址和讀數(shù)據(jù)的指令。從設(shè)備接收到地址與自己的吻合后會(huì)產(chǎn)生一個(gè)應(yīng)答信號(hào)。就這從設(shè)備就開(kāi)始向主機(jī)發(fā)送主機(jī)想要讀取的數(shù)據(jù),主機(jī)正確接收數(shù)據(jù)后會(huì)向從機(jī)回復(fù)應(yīng)答信號(hào),當(dāng)主機(jī)想要結(jié)束讀取操作時(shí),主機(jī)會(huì)回復(fù)一個(gè)非應(yīng)答信號(hào),然后生成停止信號(hào)結(jié)束數(shù)據(jù)的讀取。

312e1348-6e1e-11ee-939d-92fbcf53809c.png

31470dc6-6e1e-11ee-939d-92fbcf53809c.png

牛鼻

314baf20-6e1e-11ee-939d-92fbcf53809c.png

3166cb16-6e1e-11ee-939d-92fbcf53809c.png

所示是示波器采集的IIC信號(hào),我們通過(guò)自己的觀察得到這一段IIC包含的信息,主機(jī)向地址為0XA0 的設(shè)備寫入0X0C。

3187c6ea-6e1e-11ee-939d-92fbcf53809c.png

配置寄存器

IIC總線的傳輸速率一般是幾百KHZ,傳輸速率設(shè)置為幾MHz就可以。這里我們采用4MHz的采樣率對(duì)IIC進(jìn)行采樣。

31a1f876-6e1e-11ee-939d-92fbcf53809c.png

這些是一些函數(shù),順手翻譯

31c48774-6e1e-11ee-939d-92fbcf53809c.png

這個(gè)是配置位

31cca80a-6e1e-11ee-939d-92fbcf53809c.png

31e61966-6e1e-11ee-939d-92fbcf53809c.png

第4位

31fd0bee-6e1e-11ee-939d-92fbcf53809c.png

11 18位

3219f164-6e1e-11ee-939d-92fbcf53809c.png

最后兩個(gè)00,不增益

322caed0-6e1e-11ee-939d-92fbcf53809c.png

1101是跑不了的

324a72ee-6e1e-11ee-939d-92fbcf53809c.png

那就000,最后再補(bǔ)一個(gè)

3269e53e-6e1e-11ee-939d-92fbcf53809c.png

地址也就是這樣的

328a3dde-6e1e-11ee-939d-92fbcf53809c.png

IIC的CubeMX配置,就默認(rèn)就好

32a4f232-6e1e-11ee-939d-92fbcf53809c.png

這個(gè)是初始化函數(shù)

32b6417c-6e1e-11ee-939d-92fbcf53809c.png

翻譯的另外一個(gè)函數(shù)

32d3debc-6e1e-11ee-939d-92fbcf53809c.png

計(jì)數(shù)值滿了以后就開(kāi)始一次轉(zhuǎn)換

32e99360-6e1e-11ee-939d-92fbcf53809c.png

輸出的位數(shù)字

33051f18-6e1e-11ee-939d-92fbcf53809c.png

這個(gè)就是建立的一個(gè)數(shù)組

330f12e8-6e1e-11ee-939d-92fbcf53809c.png

好,兩個(gè)位

332a029c-6e1e-11ee-939d-92fbcf53809c.png

先留啊

3366c484-6e1e-11ee-939d-92fbcf53809c.png

具體就是這樣算的,然后除了最后兩位,前面都是0

3385980a-6e1e-11ee-939d-92fbcf53809c.png

中,低

33a7800a-6e1e-11ee-939d-92fbcf53809c.png

直接拼接

33b3ceaa-6e1e-11ee-939d-92fbcf53809c.png

這是就是左移,將一個(gè)二進(jìn)制數(shù)的所有位向左移動(dòng)指定的位數(shù),右邊用0填充。

之后相加是很簡(jiǎn)單的事情了。

33bf9cbc-6e1e-11ee-939d-92fbcf53809c.png

也可以寫成完整的位運(yùn)算的樣子,一個(gè)字節(jié)一個(gè)字節(jié)的去取

33daf35e-6e1e-11ee-939d-92fbcf53809c.png

我們上面拿到的數(shù)據(jù)才是一堆位數(shù)據(jù),我們要變成人類可讀的數(shù)字

所有的數(shù)據(jù)都是補(bǔ)碼:

33fd82de-6e1e-11ee-939d-92fbcf53809c.png

判斷一個(gè)32位無(wú)符號(hào)整數(shù)(Voltage)的最高位符號(hào)位是否為1。 & 是按位與運(yùn)算符,用于將兩個(gè)數(shù)的對(duì)應(yīng)位進(jìn)行邏輯與操作。 0x00020000 是一個(gè)十六進(jìn)制數(shù),其二進(jìn)制表示為 : 00000001 00000000 00000000 00000000。 Voltage & 0x00020000 的結(jié)果是將 Voltage 的最高位符號(hào)位與 0x00020000 進(jìn)行按位與操作。 如果結(jié)果等于 0x00020000,則說(shuō)明 Voltage 的最高位符號(hào)位為1,返回 True;否則返回 False。

如果是1的話,也就是算過(guò)的數(shù)字是不變的

340f9974-6e1e-11ee-939d-92fbcf53809c.png

我們知道了是負(fù)數(shù),接著把他還原

這段代碼是用于將一個(gè)32位無(wú)符號(hào)整數(shù)(Voltage)的最高位符號(hào)位清零,并將其轉(zhuǎn)換為正數(shù)。 Voltage &= 0x0001ffff; 這行代碼將 Voltage 與十六進(jìn)制數(shù) 0x0001ffff 進(jìn)行按位與操作。 0x0001ffff 的二進(jìn)制表示為: 00000001 11111111 11111111 11111111。 這個(gè)操作的目的是保留 Voltage 的低20位,并將最高位符號(hào)位清零。 Voltage = (~Voltage) + 1; 這行代碼首先對(duì) Voltage 進(jìn)行按位取反操作,然后加1。加1是為了將取反后的負(fù)數(shù)轉(zhuǎn)換為正數(shù)。 Voltage &= 0x0001ffff; 這行代碼再次將 Voltage 與十六進(jìn)制數(shù) 0x0001ffff 進(jìn)行按位與操作。 這個(gè)操作的目的是保留 Voltage 的低20位,將其轉(zhuǎn)換為正數(shù)。 最終,這段代碼的作用是將一個(gè)32位無(wú)符號(hào)整數(shù)的最高位符號(hào)位清零,并將其轉(zhuǎn)換為正數(shù)。

3424c394-6e1e-11ee-939d-92fbcf53809c.png

這個(gè)就是負(fù)數(shù)的

344aff82-6e1e-11ee-939d-92fbcf53809c.png

正數(shù)的

345bd0a0-6e1e-11ee-939d-92fbcf53809c.png

如果是CubeMX的工程,記得把自己的頭文件放這里

3474cdd0-6e1e-11ee-939d-92fbcf53809c.png

C文件是在這里添加

3486dd40-6e1e-11ee-939d-92fbcf53809c.png

這樣就添加好了

349cfc9c-6e1e-11ee-939d-92fbcf53809c.png

編譯通過(guò)

34b1f9bc-6e1e-11ee-939d-92fbcf53809c.png

34c0d1e4-6e1e-11ee-939d-92fbcf53809c.png

34ce4220-6e1e-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    50206

    瀏覽量

    420828
  • microchip
    +關(guān)注

    關(guān)注

    52

    文章

    1493

    瀏覽量

    117467
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6391

    瀏覽量

    543759
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354286
  • IIC協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    3921

原文標(biāo)題:MCP3421-18bit ADC 調(diào)試

文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MCP3421電流檢測(cè)問(wèn)題

    ,MCP3421讀數(shù)顯示電流有25mA,MCP341配置為16bit 2倍PGA,不清楚是哪里出了問(wèn)題,有沒(méi)有大佬解答
    發(fā)表于 03-15 09:25

    mcp3421驅(qū)動(dòng)如何寫,求指導(dǎo)

    mcp3421驅(qū)動(dòng)
    發(fā)表于 09-22 23:04

    模數(shù)轉(zhuǎn)換器MCP3421電子資料

    概述:MCP3421是△-∑A/D轉(zhuǎn)換器系列的一款18位分辨率器件。它可在2.7~5.5V單電源下電壓工作,并消耗很低的電流。在VDD=3 V、單次轉(zhuǎn)換、1 sps條件下,電流消耗僅為39μA(典型值)。
    發(fā)表于 04-08 08:00

    MCP3421的基礎(chǔ)知識(shí)點(diǎn),總結(jié)的太到位了

    MCP3421封裝形式與結(jié)構(gòu)MCP3421的工作原理MCP3421的應(yīng)用
    發(fā)表于 04-12 06:02

    mcp3421 18不起作用是怎么回事?

    我正在使用 mcp3421 adc,它只能在默認(rèn)模式 12 位下工作。 我在很多板子里用c語(yǔ)言寫的這個(gè)ic。 這在我的測(cè)試程序中 i2c.setup(4,5) let address =104
    發(fā)表于 04-26 08:02

    MCP3421 pdf datasheet

    The MCP3421 is a single channel low-noise, highaccuracy ΔΣ A/D converter with differential inputs
    發(fā)表于 08-07 12:58 ?53次下載

    MCP3421電池電量監(jiān)測(cè)演示板

    本視頻將向您介紹如何利用高精度?-Σ ADC和PIC?單片機(jī)開(kāi)發(fā)高性價(jià)比的電池電量監(jiān)測(cè)解決方案。在本解決方案中,采用的是Microchip MCP3421
    的頭像 發(fā)表于 06-06 13:46 ?5364次閱讀
    <b class='flag-5'>MCP3421</b>電池電量監(jiān)測(cè)演示板

    MCP3421 SOT23-6評(píng)估板的詳細(xì)中文資料概述

    本文檔介紹了如何將 MCP3421 SOT23-6 評(píng)估板用作開(kāi)發(fā)工具,在目標(biāo)電路板上仿真和調(diào)試固件。
    發(fā)表于 06-13 11:27 ?63次下載

    MCP3421電池電量計(jì)演示板的詳細(xì)中文資料概述

    MCP3421 電池電量計(jì)演示板用于演示 MCP3421 器件在電池電量計(jì)量應(yīng)用中的使用。 MCP3421 電池電量計(jì)演示板包括兩個(gè) MCP3421 器件、
    發(fā)表于 06-13 10:27 ?56次下載
    <b class='flag-5'>MCP3421</b>電池電量計(jì)演示板的詳細(xì)中文資料概述

    關(guān)于MCP3421電池電量監(jiān)測(cè)演示板的特點(diǎn)介紹

    MCP3421電池電量監(jiān)測(cè)演示板
    的頭像 發(fā)表于 07-10 11:19 ?5940次閱讀

    電池電量監(jiān)測(cè)解決方案的演示介紹

    視頻簡(jiǎn)介:本視頻將向您介紹如何利用高精度?-Σ ADC和PIC?單片機(jī)開(kāi)發(fā)高性價(jià)比的電池電量監(jiān)測(cè)解決方案。在本解決方案中,采用的是Microchip MCP3421
    的頭像 發(fā)表于 03-27 06:22 ?7106次閱讀

    MCP3421 18位delta-sigma ADC,采用小型SOT-23封裝,具有基準(zhǔn)電壓源。

    電子發(fā)燒友網(wǎng)為你提供()MCP3421相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有MCP3421的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,MCP3421真值表,MCP3421管腳等資料,希望可以
    發(fā)表于 04-18 21:46

    MCP3421DM 電池電力測(cè)定參考設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《MCP3421DM 電池電力測(cè)定參考設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 12-31 02:27 ?10次下載

    基于MCP3421DM-WS權(quán)重系統(tǒng)的參考設(shè)計(jì)

    View the reference design for MCP3421DM-WS. http://ttokpm.com/soft/ has thousands of reference designs to help bring your project to life.
    發(fā)表于 06-26 09:46 ?4次下載
    基于<b class='flag-5'>MCP3421</b>DM-WS權(quán)重系統(tǒng)的參考設(shè)計(jì)

    基于MCP3421EV模擬到數(shù)字轉(zhuǎn)換的參考設(shè)計(jì)

    View the reference design for MCP3421EV. http://ttokpm.com/soft/ has thousands of reference designs to help bring your project to life.
    發(fā)表于 07-08 21:35 ?2次下載
    基于<b class='flag-5'>MCP3421</b>EV模擬到數(shù)字轉(zhuǎn)換的參考設(shè)計(jì)