-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 營銷推廣 > 專題列表 > 正文
- stm32 can可以接收數(shù)據(jù),但卻無法發(fā)送數(shù)據(jù),怎么回事
- CAN總線怎么實現(xiàn)一各節(jié)點發(fā)送多各節(jié)點接收,應(yīng)答機(jī)制,向大神求解額!?。。。?/a>
- stm32中can怎么接受另一個can發(fā)來的大量數(shù)據(jù)
- Can數(shù)據(jù)接收問題
- CAN是如何接收數(shù)據(jù)的?
CAN數(shù)據(jù)對列接受(can數(shù)據(jù)接收)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于CAN數(shù)據(jù)對列接受的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁版、PC客戶端和批量生成器
問友Ai官網(wǎng):https://ai.de1919.com。
本文目錄:
stm32 can可以接收數(shù)據(jù),但卻無法發(fā)送數(shù)據(jù),怎么回事
查錯思路:
用回環(huán)模式測試收發(fā)功能是否正常
若正常,那就是另一臺CAN節(jié)點有問題
注意,兩臺對接的節(jié)點都必須在正常模式下,才能發(fā)送成功,若其中一臺不是正常模式,那另一臺正常模式的節(jié)點是無法發(fā)送成功的
若不正常,那就是你的初始化程序有問題
STM32的CAN調(diào)試思路,應(yīng)該是在回環(huán)模式下先調(diào)通一臺,能正常接收自己發(fā)送的數(shù)據(jù)后,再在正常模式下接至少2個節(jié)點測試(且兩個節(jié)點都必須是正常模式)
必須注意,CAN總線硬件有問題時可能初始化失敗(比如CAN收發(fā)芯片壞了)
CAN總線怎么實現(xiàn)一各節(jié)點發(fā)送多各節(jié)點接收,應(yīng)答機(jī)制,向大神求解額?。。。?!
ACK SLOT只有一個BIT,而接下去的ACK delimiter始終為隱性(我們可認(rèn)為是1),當(dāng)數(shù)據(jù)到達(dá)ACK SLOT的時候,所有的節(jié)點都會發(fā)送顯性位(我們可以認(rèn)為是0),而發(fā)送者在ACK這個時間里保持隱性位(即發(fā)送者在發(fā)送的時候ACK SLOT 為1),這時發(fā)送者會檢測總線上的ACK時間內(nèi)的信號,如果是0,則表示正確,如果是1,表示有錯誤。如果當(dāng)中有某一個節(jié)點在ACK SLOT填入隱性位,則總線上同樣還是顯性位電平,故只要總線上有一個節(jié)點正確接收到數(shù)據(jù),則ACK SLOT就會被填入顯性電平;那么,接收錯誤的節(jié)點如何來告知發(fā)送者此次發(fā)送不成功呢?這時候就要用到CAN的錯誤幀,當(dāng)一個接收者收到錯誤的數(shù)據(jù)的時候,它立即開始發(fā)送一個錯誤幀,則接下去總線上的信號就是這個錯誤幀,其它的節(jié)點和發(fā)送者也都會收到這個錯誤幀,那所有的節(jié)點都知道出錯了,接收者會丟掉此次消息,而發(fā)送者會試圖重發(fā)此次消息。這才是ACK SLOT真正的含義。stm32中can怎么接受另一個can發(fā)來的大量數(shù)據(jù)
CAN一幀數(shù)據(jù)最多八個字節(jié)數(shù)據(jù),所以當(dāng)發(fā)送數(shù)據(jù)大于8個字節(jié)時,拆成多幀來發(fā)。接收同理,需要對收到的數(shù)據(jù)包進(jìn)行組包,還原數(shù)據(jù)。Can數(shù)據(jù)接收問題
u32 cnt=0;void Can_Read_thread(void* psock)
{
int sock = *(int *)psock;
struct can_frame frame;
while(1)
{
memset(&frame,0,sizeof(struct can_frame));
read(sock,&frame,sizeof(struct can_frame));
if(frame.can_dlc > 0)
{
cnt += 1;
printf("Number: %d, %s recv: %sn",cnt, ifr.ifr_name,frame.data);
}
}
printf("total recv count: %dn",cnt);
}
CAN是如何接收數(shù)據(jù)的?
CAN數(shù)據(jù)接收:當(dāng)節(jié)點n從CAN總線上接收到電壓信號后,首先由CAN收發(fā)器n將總線電壓信號轉(zhuǎn)換為對應(yīng)的數(shù)字信號,然后將其數(shù)字信號發(fā)送給CAN控制器n.CAN控制器n首先對其收到的數(shù)據(jù)進(jìn)行驗收濾波,判斷收到的信號是否為自身節(jié)點需要的數(shù)據(jù),若是,則接受此數(shù)據(jù)并對其進(jìn)行解包,為節(jié)點n的微控制器n提供有效數(shù)據(jù),否則節(jié)點n放棄此次收到的CAN數(shù)據(jù)。以上就是關(guān)于CAN數(shù)據(jù)對列接受相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
蘋果電腦怎么下載caj閱讀器(蘋果電腦怎么下載cajviewer)
cad室內(nèi)裝修設(shè)計圖紙(cad室內(nèi)裝修設(shè)計圖紙怎么畫)_1
一個手機(jī)號怎么注冊兩個微信(一個手機(jī)號怎么注冊兩個微信號碼微信)