<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于單片機控制的CAN與RS-232轉換器的研究與設計

基于單片機控制的CAN與RS-232轉換器的研究與設計

作者: 時(shí)間:2013-03-15 來(lái)源:網(wǎng)絡(luò ) 收藏


  3.1 基于RS-232協(xié)議的數據接收與發(fā)送程序設計

  由于RS-232接口發(fā)送數據是以字節為單位,而總線(xiàn)接收數據以多字節組成的數據幀為單位,因此為了避免指針指向的混亂,程序中統一使用相同長(cháng)度的通用幀來(lái)保存數據。RS-232協(xié)議模塊將通用的幀使用SLIP協(xié)議進(jìn)行封裝后發(fā)送,并將接收到的SLIP幀轉為通用幀格式轉入緩沖區。系統啟動(dòng)后,主程序調用RS232_Receive函數檢測接收緩沖區的內容,如果緩沖區內有數據,則調用RS_Read()函數讀取緩沖區中的一幀數據并將其送入RS232_Receive()函數參數buf指向的緩沖區后返回。在讀取接收緩沖區數據后會(huì )交由RS232_Send()函數發(fā)送,并將幀數據保存至臨時(shí)發(fā)送緩沖區bufRS_S。程序通過(guò)ChkEndR()函數檢測數據幀是否發(fā)送完畢。

  3.2 CAN控制器SJA1000初始化程序設計

  CAN控制器SJA1000完成CAN總線(xiàn)幀的發(fā)送和接收任務(wù)。程序中,使用INITCAN()函數完成對CAN接口芯片的初始化。初始化程序設計對轉換器的正常工作相當重要。它主要完成模式設置、時(shí)鐘輸出寄存器設置、接受碼寄存器ACR設置、接收屏蔽碼寄存器AMR設置、總線(xiàn)定時(shí)器設置和輸出控制寄存器設置。

  3.3 基于CAN總線(xiàn)協(xié)議的數據接收與發(fā)送程序設計

  主程序啟動(dòng)后調用CAN_Recive()函數檢查CAN接收緩沖區中是否有數據存在,如果檢查到數據,則程序從緩沖區中讀取一幀數據并將其送入參數buf指定的緩沖區中。主程序如果發(fā)現RS-232接收緩沖區內有數據,則讀取該數據幀并將其交由CAN_Send()函數發(fā)送至CAN總線(xiàn)。這里CAN_Send()函數接收到的數據幀格式為通用幀格式,需要先將其中的DesDevID SouDevID Length 等信息從通用幀中提取出來(lái),填入CAN總線(xiàn)格式幀的各個(gè)位置,再通過(guò)命令寄存器傳遞發(fā)送請求。此外,主程序通過(guò)ChkEndC()函數檢測數據幀是否發(fā)送完畢。

  4. 結論

  本設計完成了CAN總線(xiàn)與的電路與軟件設計。本設計的創(chuàng )新點(diǎn)是:由于CAN總線(xiàn)與RS-232接口數據通信速率以及通信幀格式都不同,本設計最大優(yōu)點(diǎn)是解決了這兩點(diǎn)不同,從而實(shí)現了數據在CAN總線(xiàn)與RS-232接口之間的傳輸。在設計中由于使用了CAN總線(xiàn)進(jìn)行數據傳輸這就使得通信方式多主性。網(wǎng)絡(luò )上任意節點(diǎn)可以任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò )上其他節點(diǎn)發(fā)送信息而不分主從??梢渣c(diǎn)對點(diǎn),點(diǎn)對多點(diǎn)或全局廣播方式發(fā)送和接收數據。

參考文獻:

[1].RS-232datasheethttp://www.dzsc.com/datasheet/RS-232_584855.html.
[2].datasheethttp://www.dzsc.com/datasheet/_810155.html.
[3].X25045datasheethttp://www.dzsc.com/datasheet/X25045_722886.html.
[4].MAX232datasheethttp://www.dzsc.com/datasheet/MAX232_1074207.html.
[5].TTLdatasheethttp://www.dzsc.com/datasheet/TTL_1174409.html.
[6].PCA82C250datasheethttp://www.dzsc.com/datasheet/PCA82C250_18.html.
[7].SJA1000datasheethttp://www.dzsc.com/datasheet/SJA1000_609075.html.
[8].TLP113datasheethttp://www.dzsc.com/datasheet/TLP113_652822.html.
[9].ACRdatasheethttp://www.dzsc.com/datasheet/ACR_2278911.html.


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>