標(biāo)題:
stm32 idle中斷處理
[打印本頁]
作者:
chenjienwei678
時間:
2016-10-26 10:13
標(biāo)題:
stm32 idle中斷處理
請注意IDLE中斷是只檢測到空閑幀時產(chǎn)生的中斷。
而空閑幀的定義是:被視為完全由“1"組成的一個完整的數(shù)據(jù)幀,后面
跟著包含?數(shù)據(jù)的下一幀的開始位
。
關(guān)鍵是后面半句話,要求有
下一幀的開始位
,而你的情況恰巧沒有下一幀的開始位(傳輸已經(jīng)結(jié)束),當(dāng)然不會有中斷了。
舉例:
如果連續(xù)發(fā)送一串字符串“123”會發(fā)生空閑中斷嗎?
不會,因為沒有下一幀的開始位。
如果進了空閑中斷不手動清零,會一直進入空閑中斷。
所以用這個IDLEIE來結(jié)束DMA方式的接收,是合適的。唯一一個不合適的地方是:如果你發(fā)送一個字符串后,將DMA設(shè)置好接收傳輸方式,然后:對方?jīng)]響應(yīng),你一個字符也收不到,這時候,IDLEIE是不會來的,必須有個總超時檢測來結(jié)束DMA接收方式:因為IDLEIE中斷必須要有字符串收到,然后有一個字符的時間沒收下一個字符的起始位,才會發(fā)生。
另外,1個字符間隔的空閑就結(jié)束接收:是默認(rèn)任何對方發(fā)送字節(jié)的間隔不大于1個字符間隔,是不符合Modbus-RTU協(xié)議的,RTU協(xié)議是3.5個字符時間,如果收到"a"后,停了2個字符時間,又收到"b",Modbus-RTU還是認(rèn)為ab是同一幀的連續(xù)字符。
詳解:
http://www.torrancerestoration.com/bbs/dpj-39885-1.html
作者:
sun664019227
時間:
2020-12-15 10:24
Modbus-RTU的情況,該如何使用這個空閑中斷???
作者:
單片機愛好者223
時間:
2021-7-14 22:15
數(shù)據(jù)的下一幀的開始位? 這一句好像不需要吧??
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1