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

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

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

基于EsDA MPC-ZC1 快速實(shí)現(xiàn)I2C 監(jiān)控報(bào)警

ZLG致遠(yuǎn)電子 ? 2023-08-23 15:16 ? 次閱讀

本文介紹如何通過EsDA開發(fā)套件,快速完成一個(gè)I2C采集數(shù)據(jù)的監(jiān)控報(bào)警系統(tǒng),通過該系統(tǒng)可以減少I2C設(shè)備的故障損失和維修成本。

079d14c2-4185-11ee-8e12-92fbcf53809c.jpg ?簡介

本文基于前文的一篇I2C博客文章繼續(xù)拓展I2C實(shí)時(shí)采集后的監(jiān)控報(bào)警實(shí)驗(yàn),PT100溫度傳感器的溫度采集和讀取顯示不在本文贅述,具體詳細(xì)的操作步驟可在《EsDA MPC-ZC1 快速實(shí)現(xiàn)I2C采集監(jiān)控》文章中查看。

實(shí)驗(yàn)基于EsDA開發(fā)平臺(tái),MPC_ZC1作為I2C主機(jī)設(shè)備,TPS02測(cè)溫模塊作為從機(jī)設(shè)備。因本實(shí)驗(yàn)器材是高精度儀器,但實(shí)驗(yàn)環(huán)境有限所以溫度波動(dòng)范圍較大,所以本實(shí)驗(yàn)通過報(bào)警機(jī)制模擬恒溫箱(恒溫45℃,誤差±5℃)的實(shí)驗(yàn)場(chǎng)景。設(shè)計(jì)步驟如下:

設(shè)置過溫值和低溫值;

配置TPS02測(cè)溫模塊configurature寄存器的工作模式;

讀取TPS02測(cè)溫模塊configurature寄存器的ALERT報(bào)警狀態(tài)位,過溫和低溫時(shí)做相應(yīng)的操作。

該實(shí)驗(yàn)主要用到timer、fscript、i2c_master_read、i2c_master_write和log節(jié)點(diǎn),具體實(shí)現(xiàn)請(qǐng)見下文。


07a45426-4185-11ee-8e12-92fbcf53809c.jpg ?模擬恒溫箱業(yè)務(wù)邏輯

1. 設(shè)置過溫值和低溫值

自TPS02RAH從機(jī)設(shè)備中讀取到的實(shí)時(shí)溫度>過溫值,則說明需要減緩加熱功率;自TPS02RAH從機(jī)設(shè)備中讀取到的實(shí)時(shí)溫度

本次實(shí)現(xiàn)需要用到 timer,fscript, i2c_master_write 這些節(jié)點(diǎn):

timer:timer節(jié)點(diǎn)用于觸發(fā)I2C節(jié)點(diǎn)寫入值,因過溫值和低溫值不需要頻繁被設(shè)置所以timer的定時(shí)周期設(shè)置大一點(diǎn);

fscript:根據(jù)TPS02設(shè)備的數(shù)據(jù)手冊(cè)可知,設(shè)置溫度的上、下限值,都是6個(gè)字節(jié),前三個(gè)字節(jié)對(duì)應(yīng)通道1的上、下限值,后三個(gè)字節(jié)對(duì)應(yīng)通道2的上、下限值。

i2c_master_write:主要用于向從機(jī)設(shè)備的Thigh寄存器寫溫度上限值,Tlow寄存器寫溫度下限值。

本實(shí)驗(yàn)采用的是通道1 ,上限值是50℃(0x06 4000),下限值是45℃(0x05 A000)。

1.1添加節(jié)點(diǎn)并連線

timer節(jié)點(diǎn)觸發(fā)通過I2C向TPS02RAH設(shè)備的Thigh寄存器和Tlow寄存器寫入過溫值和低溫值,將timer,fscript,i2c_master_write節(jié)點(diǎn)加入到畫布中,并繪制連線。

07ae58c2-4185-11ee-8e12-92fbcf53809c.png1.2 配置節(jié)點(diǎn)

雙擊timer節(jié)點(diǎn),打開屬性面板設(shè)置定時(shí)周期(ms),觸發(fā)i2c_master_write節(jié)點(diǎn)寫入溫度上、下限值。

雙擊i2c_master_write的輸入節(jié)點(diǎn)fscript,并查看TPS02RAH測(cè)溫模塊的數(shù)據(jù)手冊(cè)。得知TPS02RAH的Thigh寄存器有6個(gè)字節(jié)是設(shè)置溫度的上限值,測(cè)溫模塊有兩個(gè)通道,所以前三個(gè)字節(jié)設(shè)置通道1的溫度上限值,后三個(gè)字節(jié)設(shè)置通道2 的溫度上限值;而Tlow寄存器有6個(gè)字節(jié)是設(shè)置溫度的下限值,同樣,前三個(gè)字節(jié)設(shè)置通道1的溫度下限值,后三個(gè)字節(jié)設(shè)置通道2的溫度下限值。

設(shè)置Tlow寄存器(0x02)如下:

print(msg.payload)
wb = wbuffer_create()wbuffer_write_uint8(wb,0x05)wbuffer_write_uint8(wb,0xA0)wbuffer_write_uint8(wb,0x00)wbuffer_write_uint8(wb,0x7F)wbuffer_write_uint8(wb,0xFF)wbuffer_write_uint8(wb,0xFA)
output.payload = wbuffer_get_data(wb)output.payloadLength = 6output.subAddress = 0x02

設(shè)置Thigh寄存器(0x03)如下:

print(msg.payload)
wb = wbuffer_create()wbuffer_write_uint8(wb,0x06)wbuffer_write_uint8(wb,0x40)wbuffer_write_uint8(wb,0x00)wbuffer_write_uint8(wb,0x7F)wbuffer_write_uint8(wb,0xFF)wbuffer_write_uint8(wb,0xFA)
output.payload = wbuffer_get_data(wb)output.payloadLength = 6output.subAddress = 0x03

雙擊i2c_master_write節(jié)點(diǎn),打開屬性面板根據(jù)TPS02RAH數(shù)據(jù)手冊(cè)設(shè)置如下圖所示,并點(diǎn)擊I2C主機(jī)配置的鉛筆圖標(biāo)去設(shè)置I2C主機(jī)設(shè)備路徑名和時(shí)鐘頻率。

配置I2C從機(jī)設(shè)備寄存器Tlow寄存器(0x02)如下:

07bdd8b0-4185-11ee-8e12-92fbcf53809c.png配置I2C從機(jī)設(shè)備寄存器Thigh?寄存器(0x03)如下:

07ce706c-4185-11ee-8e12-92fbcf53809c.png

2. 配置報(bào)警模式根據(jù)TPS02RAH的數(shù)據(jù)手冊(cè)可知,報(bào)警模式需要在configurature寄存器中進(jìn)行設(shè)置。后讀取configurature寄存器的ALERT報(bào)警狀態(tài)位來報(bào)警。本實(shí)驗(yàn)需要使能通道1 的配置,且需要連續(xù)測(cè)試的溫度值有2個(gè)均大于Thigh或者均小于Tlow的情況下才能報(bào)警置位(防止溫度不穩(wěn)定,忽高忽低頻繁假報(bào)警)。

本次實(shí)現(xiàn)需要用到 timer,fscript, i2c_master_write 這些節(jié)點(diǎn):

timer: timer節(jié)點(diǎn)用于觸發(fā)I2C節(jié)點(diǎn)寫入值,因報(bào)警模式不需要頻繁被設(shè)置所以timer的定時(shí)周期設(shè)置大一點(diǎn);

fscript:根據(jù)TPS02設(shè)備的數(shù)據(jù)手冊(cè)可知,設(shè)置configurature寄存器共兩個(gè)字節(jié)。分別代表兩個(gè)通道,第一個(gè)字節(jié)配置通道 1,第二個(gè)字節(jié)配置通道2。本實(shí)驗(yàn)使用的是通道1;

i2c_master_write:主要用于向從機(jī)設(shè)備的configurature寄存器寫工作模式。

2.1添加節(jié)點(diǎn)并連線

timer節(jié)點(diǎn)觸發(fā)通過I2C向TPS02RAH設(shè)備的configurature寄存器寫入報(bào)警模式,將timer,fscript,i2c_master_write節(jié)點(diǎn)加入到畫布中,并繪制連線。

07e0c758-4185-11ee-8e12-92fbcf53809c.png

2.2配置節(jié)點(diǎn)

雙擊timer節(jié)點(diǎn),打開屬性面板設(shè)置定時(shí)周期(ms),觸發(fā)i2c_master_write節(jié)點(diǎn)寫入報(bào)警模式。

雙擊i2c_master_write的輸入節(jié)點(diǎn)fscript,因需要使用通道1 且根據(jù)數(shù)據(jù)手冊(cè)可知:因不支持待機(jī)模式所以SD置0;報(bào)警信號(hào)輸出TM為0比較模式;報(bào)警引腳輸出信號(hào)狀態(tài)控制POL為0;因本實(shí)驗(yàn)采取的PT100精度頗高響應(yīng)超快所以當(dāng)在過溫或低溫狀態(tài)下,觸發(fā) ALERT 輸出信號(hào)的溫度值測(cè)試個(gè)數(shù)為2,所以F1置0,F0置1;通道1 的EN置0,使能配置;所以讀取configurature寄存器的ALERT報(bào)警狀態(tài)位時(shí),初始狀態(tài)為高,當(dāng)高于Thigh超溫時(shí),則ALERT報(bào)警狀態(tài)為0,當(dāng)?shù)陀赥low超溫時(shí),則ALERT報(bào)警狀態(tài)為1。

print(msg.payload)
wb = wbuffer_create()wbuffer_write_uint8(wb,0x28)wbuffer_write_uint8(wb,0xb8)

output.payload = wbuffer_get_data(wb)output.payloadLength = 2output.subAddress = 0x01

雙擊i2c_master_write節(jié)點(diǎn),打開屬性面板根據(jù)TPS02RAH數(shù)據(jù)手冊(cè)設(shè)置如下圖所示,并點(diǎn)擊I2C主機(jī)配置的鉛筆圖標(biāo)去設(shè)置I2C主機(jī)設(shè)備路徑名和時(shí)鐘頻率。

07f35526-4185-11ee-8e12-92fbcf53809c.png

3. 讀取報(bào)警狀態(tài)

根據(jù)數(shù)據(jù)手冊(cè)以及2.2的操作可知,除去初始狀態(tài),configurature寄存器的ALERT報(bào)警狀態(tài)變?yōu)?時(shí)為超溫狀態(tài);configurature寄存器的ALERT報(bào)警狀態(tài)變?yōu)?時(shí)為低溫狀態(tài)。

本次實(shí)現(xiàn)需要用到 timer,fscript, i2c_master_read, fscript, log 這些節(jié)點(diǎn):

  • timer: timer節(jié)點(diǎn)用于定時(shí)觸發(fā)I2C節(jié)點(diǎn)讀取數(shù)據(jù);
  • fscript:根據(jù)TPS02設(shè)備的數(shù)據(jù)手冊(cè)可知,設(shè)置configurature寄存器共兩個(gè)字節(jié)。分別代表兩個(gè)通道,第一個(gè)字節(jié)配置通道 1,第二個(gè)字節(jié)配置通道2。本實(shí)驗(yàn)使用的是通道1。并將讀取出來的ALERT報(bào)警狀態(tài)提取出來;
  • i2c_master_read:主要用于向從機(jī)設(shè)備的configurature寄存器讀取ALERT報(bào)警狀態(tài);
  • log:將報(bào)警狀態(tài)打印顯示。

3.1添加節(jié)點(diǎn)并連線

timer節(jié)點(diǎn)定時(shí)觸發(fā)通過I2C向TPS02RAH設(shè)備的configurature寄存器讀取報(bào)警模式,將timer,fscript,i2c_master_read,log節(jié)點(diǎn)加入到畫布中,并繪制連線。

0801b030-4185-11ee-8e12-92fbcf53809c.png

3.2配置節(jié)點(diǎn)

雙擊timer節(jié)點(diǎn),打開屬性面板設(shè)置定時(shí)周期(ms),觸發(fā)i2c_master_read節(jié)點(diǎn)讀取報(bào)警模式。

雙擊i2c_master_read的輸入節(jié)點(diǎn)fscript,并查看數(shù)據(jù)手冊(cè)。將configurature寄存器的兩個(gè)字節(jié)讀取出來。

0815e9a6-4185-11ee-8e12-92fbcf53809c.png雙擊i2c_master_read節(jié)點(diǎn),打開屬性面板根據(jù)TPS02RAH數(shù)據(jù)手冊(cè)設(shè)置如下圖所示,并點(diǎn)擊I2C主機(jī)配置的鉛筆圖標(biāo)去設(shè)置I2C主機(jī)設(shè)備路徑名和時(shí)鐘頻率。08212cf8-4185-11ee-8e12-92fbcf53809c.png

雙擊i2c_master_read的消費(fèi)者節(jié)點(diǎn)fscript,將通道1 的ALERT報(bào)警狀態(tài)從讀取到的兩個(gè)字節(jié)的configurature寄存器數(shù)據(jù)提取出來。

因stat是ALERT報(bào)警狀態(tài)位的賦值,由數(shù)據(jù)手冊(cè)可知,當(dāng)報(bào)警信號(hào)輸出TM為0比較模式,報(bào)警引腳輸出信號(hào)狀態(tài)控制POL為0時(shí),ALERT報(bào)警狀態(tài)位的賦值stat的初始值是1。因?yàn)橹恍璩跏蓟淮嗡詫tat變量放在Initialize中進(jìn)行初始化:

Initialize:

stat = 1;

Function:

//將讀取的6個(gè)uint8_t類型的數(shù)據(jù)打印rb = rbuffer_create(msg.payload, msg.payloadLength)print("length: "+ msg.payloadLength)
for(var i=0; i1) { d = rbuffer_read_uint8(rb); if(i == 0){ msg.channel1 = (d>>6) & 0x01; } msg.channel2 = (d>>6) & 0x01;}
if(stat != msg.channel1) { stat = msg.channel1; if(stat == 0) { //通道1 從1-->0,超溫報(bào)警 print("high temp error!\n"); } else if(stat == 1) { //通道1 從0--->1,低溫報(bào)警 print("low temp error!\n"); }}


07a45426-4185-11ee-8e12-92fbcf53809c.jpg ?模擬恒溫箱業(yè)務(wù)實(shí)現(xiàn)本模擬實(shí)驗(yàn)在高溫報(bào)警時(shí)采取遠(yuǎn)離熱水源的形式來達(dá)到減少加熱功率的操作;在低溫報(bào)警時(shí)采取靠近熱水源的形式來達(dá)到增大加熱功率的操作,來實(shí)現(xiàn)模擬恒溫箱。并結(jié)合EsDA MPC-ZC1快速實(shí)現(xiàn)I2C采集監(jiān)測(cè)實(shí)驗(yàn)來實(shí)時(shí)讀取PT100的溫度值。0834cb00-4185-11ee-8e12-92fbcf53809c.png實(shí)物接線圖如下:

0849bdda-4185-11ee-8e12-92fbcf53809c.jpg

因讀取溫度傳感器的數(shù)據(jù)處理比報(bào)警機(jī)制處理邏輯要稍靠后一點(diǎn),顯示報(bào)警狀態(tài)后就立馬采取了相應(yīng)的減緩功率措施或增加功率措施。所以下圖大部分只截圖到正常的溫度顯示和報(bào)警打印顯示,而沒有具體的超溫/低溫溫度顯示。實(shí)驗(yàn)結(jié)果如下:086337f6-4185-11ee-8e12-92fbcf53809c.png

讀取configurature寄存器的ALERT報(bào)警狀態(tài)位可知此時(shí)是低溫報(bào)警,此時(shí)需要增加功率。

087145e4-4185-11ee-8e12-92fbcf53809c.png讀取configurature寄存器的ALERT報(bào)警狀態(tài)位可知此時(shí)是高溫報(bào)警,此時(shí)需要減緩功率。088317ce-4185-11ee-8e12-92fbcf53809c.png讀取configurature寄存器的ALERT報(bào)警狀態(tài)位可知此時(shí)是低溫報(bào)警,此時(shí)需要增加功率。0891578a-4185-11ee-8e12-92fbcf53809c.png實(shí)驗(yàn)結(jié)果:通過報(bào)警機(jī)制可保持45℃恒溫,上下5℃波動(dòng)。

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

    關(guān)注

    0

    文章

    364

    瀏覽量

    40788
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1477

    瀏覽量

    123052
  • ESDA
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    7496
  • MPC
    MPC
    +關(guān)注

    關(guān)注

    2

    文章

    36

    瀏覽量

    21193
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RISC V的I2C操作

    函數(shù)功能,除了必須通過I2C主設(shè)備實(shí)現(xiàn)的功能:發(fā)送start和stop之外,函數(shù)本身并沒有主從之分;當(dāng)需要RISC V中的I2C做從設(shè)備時(shí),只需監(jiān)控總線狀態(tài)(如是否接收到有效的數(shù)據(jù)等)
    的頭像 發(fā)表于 11-01 11:06 ?87次閱讀

    I2C協(xié)議的基礎(chǔ)知識(shí)

    本文從I2C協(xié)議的概述開始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結(jié)構(gòu),最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計(jì)算。
    的頭像 發(fā)表于 10-22 15:51 ?204次閱讀
    <b class='flag-5'>I2C</b>協(xié)議的基礎(chǔ)知識(shí)

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 11:13 ?1次下載
    了解<b class='flag-5'>I2C</b>總線

    TAS5421-Q1和TAS5411-Q1 I2C應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《TAS5421-Q1和TAS5411-Q1 I2C應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 10:35 ?0次下載
    TAS5421-Q<b class='flag-5'>1</b>和TAS5411-Q<b class='flag-5'>1</b> <b class='flag-5'>I2C</b>應(yīng)用說明

    I2C基本指南

    電子發(fā)燒友網(wǎng)站提供《I2C基本指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本指南

    具有熱插拔功能和IEC ESD功能的隔離式I2C緩沖器如何改進(jìn)隔離式I2C

    電子發(fā)燒友網(wǎng)站提供《具有熱插拔功能和IEC ESD功能的隔離式I2C緩沖器如何改進(jìn)隔離式I2C.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 09:58 ?0次下載
    具有熱插拔功能和IEC <b class='flag-5'>ESD</b>功能的隔離式<b class='flag-5'>I2C</b>緩沖器如何改進(jìn)隔離式<b class='flag-5'>I2C</b>

    簡單認(rèn)識(shí)I2C通信協(xié)議

    I2C(Inter-Integrated Circuit)通信協(xié)議是由飛利浦公司(現(xiàn)為恩智浦半導(dǎo)體)開發(fā)的一種簡單、雙向二線制同步串行總線協(xié)議。自1982年發(fā)布以來,I2C協(xié)議因其高效、靈活和易于實(shí)現(xiàn)的特點(diǎn),在電子設(shè)備間的數(shù)據(jù)交
    的頭像 發(fā)表于 07-25 18:06 ?1230次閱讀

    TCA8418E I2C控制鍵盤掃描IC,帶集成ESD保護(hù)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TCA8418E I2C控制鍵盤掃描IC,帶集成ESD保護(hù)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-27 09:58 ?0次下載
    TCA8418E <b class='flag-5'>I2C</b>控制鍵盤掃描IC,帶集成<b class='flag-5'>ESD</b>保護(hù)數(shù)據(jù)表

    什么是I2C協(xié)議 I2C總線的控制邏輯

    在實(shí)際使用過程中,I2C比較容易出現(xiàn)的一個(gè)問題就是死鎖 ,死鎖在I2C中主要表現(xiàn)為:I2C死鎖時(shí)表現(xiàn)為SCL為高,SDA一直為低。
    發(fā)表于 03-12 09:17 ?873次閱讀
    什么是<b class='flag-5'>I2C</b>協(xié)議 <b class='flag-5'>I2C</b>總線的控制邏輯

    如何為TC334LP32F200FAAKXUMA1實(shí)現(xiàn)I2C?

    嗨, 我正在使用 TC334LP32F200FAAKXUMA1 微控制器。 如何為該控制器實(shí)現(xiàn) I2C? 由于沒有物理 I2C 硬件,我們能否實(shí)現(xiàn)
    發(fā)表于 03-04 07:03

    GD32 MCU硬件I2C不可靠不如軟件I2C?來看看紅楓派開發(fā)版的硬件I2C驅(qū)動(dòng)如何做到穩(wěn)得一批

    在一個(gè)評(píng)論中,看到網(wǎng)友對(duì)硬件I2C的討論,硬件I2C Busy找不到原因、軟件I2C穩(wěn)得一批。
    的頭像 發(fā)表于 02-23 09:37 ?2550次閱讀
    GD32 MCU硬件<b class='flag-5'>I2C</b>不可靠不如軟件<b class='flag-5'>I2C</b>?來看看紅楓派開發(fā)版的硬件<b class='flag-5'>I2C</b>驅(qū)動(dòng)如何做到穩(wěn)得一批

    ADE7880使用I2C讀取數(shù)據(jù),怎么設(shè)置I2C快速模式?

    ADE7880使用I2C讀取數(shù)據(jù)問題,怎么設(shè)置I2C快速模式,謝謝。
    發(fā)表于 12-26 07:41

    I2C地址跳變問題的調(diào)試案例

    引言:I2C作為使用最為廣泛的通訊接口,調(diào)試各類I2C器件,大家應(yīng)該都很輕車熟路。一般對(duì)于外掛電阻配置器件的I2C地址,例如電阻上拉之后,器件的地址就會(huì)固定下來不再變動(dòng),但是今天給大家分享一個(gè)自己的調(diào)試案例,即
    的頭像 發(fā)表于 11-22 10:51 ?1448次閱讀
    <b class='flag-5'>I2C</b>地址跳變問題的調(diào)試案例

    I2C總線信號(hào)與測(cè)試案例(一)

    I2C bus是Inter-IC bus的縮寫,意思是IC器件之間的通訊總線;I2C 總線的特點(diǎn)如下
    的頭像 發(fā)表于 11-20 15:45 ?1792次閱讀
    <b class='flag-5'>I2C</b>總線信號(hào)與測(cè)試案例(一)

    分享I2C總線規(guī)范

    電子發(fā)燒友網(wǎng)站提供《分享I2C總線規(guī)范.pdf》資料免費(fèi)下載
    發(fā)表于 11-18 10:49 ?0次下載
    分享<b class='flag-5'>I2C</b>總線規(guī)范