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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關于硬件I2C調試

查看數: 4689 | 評論數: 32 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-9-16 08:36

正文摘要:

硬件I2C調試,在數據傳輸過程中,會周期性的發生主機給從機發送地址沒有停止位,造成通訊中斷,加入外部中斷,在沒有停止位的時候重啟I2C,加入外部中斷調試發現,在從機向主機傳輸 數據 過程中,容易誤觸發外部中斷 ...

回復

ID:1069203 發表于 2023-3-31 10:36
3346661547 發表于 2021-9-17 13:23
通過示波器觀察,在從機向主機發送數據的時候,SDA數據變化不在時鐘低電平中間變化電平,在時鐘快要上升 ...

這個波形的問題是咋回事呀,請問有解決嗎
ID:933803 發表于 2021-9-18 08:05
188610329 發表于 2021-9-17 20:32
你是不是對看門狗有什么誤會?
你把喂狗放在定時器里,定時器中斷掛了,看門狗鐵定就會復位,而只要定時 ...

外部中斷不是放在I2C的引腳上,用I2C引腳短接其他外部中斷引腳,用其他引腳監控I2C引腳狀態。SDA變化沒意義????STOP信號是啥????我看的是假的I2C ???
ID:401564 發表于 2021-9-17 22:21
與其在這跟別人抬扛,不如把電路,單片機型號,IIC器件型號上傳,說不定有人用過,問題就能解決了也說不定
ID:624769 發表于 2021-9-17 20:32
3346661547 發表于 2021-9-17 19:44
我是把看門狗喂狗直接放在定時器中斷里面,中斷掛了看門狗也不會復位

你是不是對看門狗有什么誤會?
你把喂狗放在定時器里,定時器中斷掛了,看門狗鐵定就會復位,而只要定時器中斷沒掛,看門狗就不會生效,那么,這看門狗還有什么意義?和沒開沒有任何區別。
另外,我不明白,你在SDA上設什么外部中斷,你如果是硬件I2C,你要中斷控制不是應該用I2C 中斷么?
就算是軟件模擬I2C, 做主機的話,不需要中斷,做從機的話,外部中斷也是壓在CLK上,沒有放在SDA上的,因為,時鐘變化了,SDA變化才有意義,時鐘沒有變化,SDA的變化沒有任何意義。
ID:933803 發表于 2021-9-17 19:51
3346661547 發表于 2021-9-17 19:44
我是把看門狗喂狗直接放在定時器中斷里面,中斷掛了看門狗也不會復位

會不會是因為中斷太頻繁造成的,因為外部中斷是在傳輸數據過程中就打開,SDA一個上升沿就進入外部中斷,應該會很頻繁,傳輸整個字節外部中斷都是打開的,大概20us進入一次外部中斷,最多能進入8次外部中斷
ID:933803 發表于 2021-9-17 19:44
188610329 發表于 2021-9-17 19:23
如果,你的單片機,連看門狗都掛了,那么就不是I2C,或者中斷的問題,

而是你單片機直接有問題,或者晶 ...

我是把看門狗喂狗直接放在定時器中斷里面,中斷掛了看門狗也不會復位
ID:933803 發表于 2021-9-17 19:43
188610329 發表于 2021-9-17 19:23
如果,你的單片機,連看門狗都掛了,那么就不是I2C,或者中斷的問題,

而是你單片機直接有問題,或者晶 ...

我現在做的是芯片代碼移植,之前的板子的芯片是ST的,現在改用ABOV的,用的是硬件I2C的100khz的傳輸速率,移植的是從機的代碼,從機檢測溫濕度發送主機,移植的代碼和原ST的代碼思路是一樣的,和ABOV官網I2C例程配置寄存器的方法都是一樣的,用這種方法周期性的通訊完成后,主機發送START+地址后缺少應答位,主機直接發送STOP信號了,但是I2C從機不進入空閑狀態,所以我用外部中斷直接檢測STOP信號,在從機給主機發送數據開始的時候打開使能外部中斷,檢測到STOP信號直接重新初始化I2C,然后關閉外部中斷,這樣通訊就不會中斷,但是在傳輸傳感器數據過程中容易誤判為STOP信號,所以加了定時器延時外部中斷,等到數據要傳輸完成再打開外部中斷。
ID:624769 發表于 2021-9-17 19:23
3346661547 發表于 2021-9-17 18:33
我的I2C不是有問題,只是這個芯片的硬件I2C有bug,調試比較難,現在能持續運行幾個小時,中斷就掛了,所 ...

如果,你的單片機,連看門狗都掛了,那么就不是I2C,或者中斷的問題,

而是你單片機直接有問題,或者晶振直接停擺了。你反而應該在這方面去找原因了。因為,就算I2C有bug,也不可能擋住 看門狗 要重起的欲望。因為看門狗是逆向判斷,到時間了就重起,除非你不停的給看門狗喂時間。所以就算單片機因為你程序的問題,或者其它硬件的問題卡死了,時間一到看門狗就會重起。
ID:933803 發表于 2021-9-17 18:33
188610329 發表于 2021-9-17 16:46
你要是覺得我不懂,你懂得話那么就這么覺得吧,反正我I2C用到現在沒出過任何問題,現在遇到問題的是你。
...

我的I2C不是有問題,只是這個芯片的硬件I2C有bug,調試比較難,現在能持續運行幾個小時,中斷就掛了,所有中斷全部失效,包括看門狗也失效,程序其他沒用到中斷的地方還能繼續運行。不知道是什么原因,用示波器也抓不到最后傳輸過程中發生了什么導致中斷掛了,我也沒有邏輯分析儀。
ID:161164 發表于 2021-9-17 17:54
說了那么多還是沒有提及該有Bug的芯片的型號牌子
是不是特供需要保密的?
ID:624769 發表于 2021-9-17 16:46
3346661547 發表于 2021-9-17 16:26
我看你只會糾結I2C的STOP信號不該叫停止位,你是只會這個吧,

你要是覺得我不懂,你懂得話那么就這么覺得吧,反正我I2C用到現在沒出過任何問題,現在遇到問題的是你。

縱觀用到現在各種不同的的 硬件I2C,
全手動的,所有信號包括ACK/NAK都要自己發送和接收的用過,
半自動的,自動開始信號,自動ACK/NAK的也用過。
就是沒有見到過 自動 STOP 信號的。

一個單片機而已,又不是人工智能,它能知道你數據傳輸完了?然后就自動切斷鏈接了? 你查查手冊上,I2C的命令寄存器,里面的指令集,終止傳輸的指令 到底是獨立的,還是會包含在其他指令里?
ID:624769 發表于 2021-9-17 16:30
3346661547 發表于 2021-9-17 16:20
什么叫適當的位置命令I2C硬件硬件發送終止傳輸的信號?硬件I2C不都是傳輸完成后主機自動發送STOP信號的嗎 ...

你前面三步都對,
第四步錯了, 第四步只是數據傳輸,第五步才是發送 STOP 指令,因為數據可能會傳輸多次,會多次循環第四步。等到所有的數據都接受完畢,才會去發送 STOP 指令,終止傳輸。
ID:933803 發表于 2021-9-17 16:26
188610329 發表于 2021-9-17 16:06
不是我扣字眼,是你鉆牛角尖了。
我之所以跟你強調,沒有停止“位”,就是讓你明白,  串口有專屬的停止 ...

我看你只會糾結I2C的STOP信號不該叫停止位,你是只會這個吧,
ID:933803 發表于 2021-9-17 16:24
188610329 發表于 2021-9-17 16:06
不是我扣字眼,是你鉆牛角尖了。
我之所以跟你強調,沒有停止“位”,就是讓你明白,  串口有專屬的停止 ...

你到底懂不懂硬件I2C哦,
ID:933803 發表于 2021-9-17 16:20
188610329 發表于 2021-9-17 16:06
不是我扣字眼,是你鉆牛角尖了。
我之所以跟你強調,沒有停止“位”,就是讓你明白,  串口有專屬的停止 ...

什么叫適當的位置命令I2C硬件硬件發送終止傳輸的信號?硬件I2C不都是傳輸完成后主機自動發送STOP信號的嗎,還要命令?你說的是軟件I2C吧,硬件I2C工作流程是只要把寄存器配置好了,自動發送START信號和STOP信號,第一步主機發出START信號+從機地址,第二步傳感器地址,第三步寄存器操作命令,寄存器讀還是寫,第四部是數據傳輸+主機發出STOP信號進入空閑狀態然后進入下一次傳輸,主機發出START...。什么叫適當的地方發送STOP信號呢?
ID:933803 發表于 2021-9-17 16:06
188610329 發表于 2021-9-17 15:29
STOP 終止信號,不是停止位,這兩個意思不能搞混。
串口發送8位數據后,有一個停止位,這個之所以叫停止 ...

就顯的你很懂I2C了,我看你是很會扣字眼啊,自己上百度搜搜I2C停止位,看看有沒有人用I2C停止位這個詞提問,就算都叫錯了,難道大家就不知道這個就是STOP停止信號了?咋就顯的你很棒呢,鍵盤在手,天下我有?我看你不該叫高級工程師,應該叫高級扣字眼工程師。
ID:624769 發表于 2021-9-17 16:06
3346661547 發表于 2021-9-17 15:45
我就叫他停止位不行嗎,I2C是你發明的嗎,哪個不知道我說的I2C中的停止位就是STOP終止信號,還有其他意思 ...

不是我扣字眼,是你鉆牛角尖了。
我之所以跟你強調,沒有停止“位”,就是讓你明白,  串口有專屬的停止“位”,所以,是硬件自己完成的。

而I2C是沒有停止“位”的,所以,不管你是不是用的硬件I2C, 沒有發送終止傳輸的“信號”,
不是硬件有問題,只是你沒有讓他去發送這個終止傳輸的“信號”,

硬件的I2C 自身不會 自做主張 發送 停止“信號”, 因為它無法確定何時需要發停止“信號”,因為沒有專門發送停止信號的“位”。需要你自己在你認為適當的時候,命令I2C硬件 發送 終止傳輸的“信號”。
ID:933803 發表于 2021-9-17 15:45
188610329 發表于 2021-9-17 15:29
STOP 終止信號,不是停止位,這兩個意思不能搞混。
串口發送8位數據后,有一個停止位,這個之所以叫停止 ...

我就叫他停止位不行嗎,I2C是你發明的嗎,哪個不知道我說的I2C中的停止位就是STOP終止信號,還有其他意思嗎,我說了停止位你就關注到這幾個字了?也只有你在這扣字眼,天生杠精啊
ID:624769 發表于 2021-9-17 15:29
3346661547 發表于 2021-9-16 14:51
你沒用過I2C嗎,STOP信號啊

STOP 終止信號,不是停止位,這兩個意思不能搞混。
串口發送8位數據后,有一個停止位,這個之所以叫停止位,是因為有個固定的位置。
而I2C, 發送 8位字節和接受1位ACK/NAK 應答位,這些位置是固定的,所以叫“位”
但是,任何時候,只要CLK高電平的時候,即兩個“位”的中間區域 拉高 IO 就產生了終止傳輸信號,這個不能叫做"位",你可以在ACK之后發,也可以在數據傳輸一半的時候發,所以,I2C是沒有停止"位"的,設計的時候,就沒有給終止信號,預留一個專門的"位"給他。
所以,事實上不該你問我用過I2C嗎? 而是你到底搞明白什么是 I2C了嗎?
ID:933803 發表于 2021-9-17 15:18
glinfei 發表于 2021-9-17 10:13
是不是適用的庫有問題,不可能不發停止信號,把程序貼點上來看看唄,用兩個中斷去處理停止問題,頻率上不來 ...

主要問題是這個硬件I2C,在幾次通訊完成后,周期性的有一次,發送完數據后缺少應答位,主機直接發送停止位,但是I2C從機不進入空閑狀態。
ID:933803 發表于 2021-9-17 13:23
glinfei 發表于 2021-9-17 10:13
是不是適用的庫有問題,不可能不發停止信號,把程序貼點上來看看唄,用兩個中斷去處理停止問題,頻率上不來 ...

通過示波器觀察,在從機向主機發送數據的時候,SDA數據變化不在時鐘低電平中間變化電平,在時鐘快要上升沿的時候才變化電平,容易造成誤判為停止信號,造成數據異常,加入定時器約束外部中斷判斷時間,在數據發送完成再判斷。
ID:933803 發表于 2021-9-17 13:19
glinfei 發表于 2021-9-17 10:13
是不是適用的庫有問題,不可能不發停止信號,把程序貼點上來看看唄,用兩個中斷去處理停止問題,頻率上不來 ...

用兩個中斷可以運行,只不過不能長時間運行,能運行4,5個小時
ID:844772 發表于 2021-9-17 10:13
是不是適用的庫有問題,不可能不發停止信號,把程序貼點上來看看唄,用兩個中斷去處理停止問題,頻率上不來啊。
ID:959346 發表于 2021-9-17 09:24
3346661547 發表于 2021-9-16 14:58
我用的是硬件I2C,只不過這個芯片硬件I2C 可能有bug,從機向主機傳輸數據完成后,不產生停止位,所有加入 ...

IIC的停止信號是由主設備產生的啊,從設備只產出ACK信號啊?
ID:187802 發表于 2021-9-16 18:38
調整一下頻率吧
ID:401564 發表于 2021-9-16 18:04
沒有啟動信號和停止信號就不叫IIC,只能是叫一種通訊方式,它能叫IIC就肯定是有啟動和停止信號的
如果是像你說的沒有信號,你怎么知道接收到的數據是第幾個位的?反正就是時鐘和高低電平而已
ID:592807 發表于 2021-9-16 16:46
188610329 發表于 2021-9-16 12:39
停止位? 你確定你用的是I2C? I2C 有停止位的么? 不是只有 ACK, NAK 么?

I2C有開啟信號和終止信號和ACK,停止位STOP BIT不是串口通信的嗎
ID:933803 發表于 2021-9-16 14:58
Jiang_YY 發表于 2021-9-16 14:36
1 你是主設備還是從設備出問題?2 你這個不是硬件IIC,是軟件模擬的IIC吧?硬件IIC只要配置完成,中間不需 ...

我用的是硬件I2C,只不過這個芯片硬件I2C 可能有bug,從機向主機傳輸數據完成后,不產生停止位,所有加入外部中斷 重啟I2C,這種方法短時間程序可以運行,長時間所有中斷容易 掛,包括看門狗也失效
ID:933803 發表于 2021-9-16 14:53
Jiang_YY 發表于 2021-9-16 14:36
1 你是主設備還是從設備出問題?2 你這個不是硬件IIC,是軟件模擬的IIC吧?硬件IIC只要配置完成,中間不需 ...

從設備出問題,從設備向主設備發送數據,不會受其他中斷影響,那就是I2C中斷優先級是最高的嗎
ID:933803 發表于 2021-9-16 14:51
188610329 發表于 2021-9-16 12:39
停止位? 你確定你用的是I2C? I2C 有停止位的么? 不是只有 ACK, NAK 么?

你沒用過I2C嗎,STOP信號啊
ID:959346 發表于 2021-9-16 14:36
1 你是主設備還是從設備出問題?2 你這個不是硬件IIC,是軟件模擬的IIC吧?硬件IIC只要配置完成,中間不需要軟件處理,不會受中斷影響啊。
ID:624769 發表于 2021-9-16 12:39
停止位? 你確定你用的是I2C? I2C 有停止位的么? 不是只有 ACK, NAK 么?

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产99 | 精品中文字幕视频 | 欧美手机在线 | 97超碰中文网 | 天天拍天天色 | 中文字幕在线一区 | 成人午夜精品一区二区三区 | 久久久激情 | 91在线免费视频 | 久久久美女 | 精品国产乱码久久久久久88av | 日本国产欧美 | 国产精品色一区二区三区 | 久久亚洲国产精品日日av夜夜 | 欧美亚洲国产成人 | 亚洲成人精品免费 | 少妇无套高潮一二三区 | 精品久久国产 | 6080亚洲精品一区二区 | 国产色| 国产精品永久免费视频 | 久久亚洲欧美日韩精品专区 | 欧美在线视频免费 | 黄频视频 | 欧美男人天堂 | 色婷婷综合久久久中字幕精品久久 | 99av成人精品国语自产拍 | 性色av网站 | 亚洲精品久久久久久宅男 | 欧美激情 一区 | 欧美视频在线播放 | 日韩在线视频观看 | 久久99这里只有精品 | 一区二区三区精品视频 | av中文字幕网 | 亚洲欧美一区二区三区视频 | 狠狠操狠狠 | 性高湖久久久久久久久aaaaa | 日本a网站| 国产精品乱码一区二区三区 | 81精品国产乱码久久久久久 |