隨著能源日益短缺,科技的日趨智能化,復雜高效的多機控制,已日趨成為當今社會迅速發(fā)展的必然需求。昊芯順應時代要求,推出適用于高精度工業(yè)自動化運動控制的新版HXS320F28034數(shù)字信號處理器DSP,其CAN模塊以Mailbox信箱MBOXn控制與傳輸數(shù)據(jù),實現(xiàn)DSP之間的控制指令高效收發(fā),可更有效助力于工程師實現(xiàn)高效的多DSP控制指令收發(fā),廣泛應用于電動汽車、風力發(fā)電、軌道交通、機器人等高復雜度控制領(lǐng)域。

自平頭哥半導體有限公司的劍池集成開發(fā)環(huán)境(簡稱“CDK”)支持HX2000系列芯片調(diào)試以來,本期以USB_CAN通信收發(fā)實例講解CAN網(wǎng)絡(luò)通信功能。
HX2000系列CAN模塊原理如下圖,通過CANMC[CCR]使能進入初始化配置模式,等待CANMC[CCE]置高寫入CANBTC位配置波特率;等待CANMC[CCE]拉低,完成初始化;
通過Mailbox郵箱MBOXn.MSGCTRL的RTR位配置遠程傳輸請求,TPL位配置MBOXn傳輸優(yōu)先級,DLC位配置傳輸0~8個字節(jié),傳輸過程如下:
1.CAN總線通過CAN傳輸芯片向CAN發(fā)送數(shù)據(jù),使能CANRIOC[RXFUNC]打開接收線,接收來自GPIOMUX所定義CANRX接收引腳上的數(shù)據(jù),裝載到緩沖區(qū)Receive Buffer;
2.通過CANMD[MDn]配置Mailbox郵箱MBOXn為接收,使能CANME[MEn]打開郵箱MBOXn,接收來自緩沖區(qū)中的數(shù)據(jù);
3.全局中斷標志的設(shè)置取決于CANGIM寄存器中GIL位的設(shè)置。如果設(shè)置了該位,則全局中斷在CANGIF1寄存器中設(shè)置位;否則,在CANGIF0寄存器中設(shè)置。通過CANMIM[MIMn]配置接收掩碼中斷使能;通過CANMIL[MILn]配置,將MBOXn接收中斷,映射到中斷ECAN0INTA或ECAN1INTA;使能CANGIM[I0EN/I1EN]打開中斷信號,MBOXn接收到數(shù)據(jù)時,將產(chǎn)生一個接收中斷,使CANGIF0/1[MIV0/1]中相應接收郵箱MBOXn的郵箱號置位;通過PIE響應CPU執(zhí)行接收中斷程序:
(1)置位CANRMP[RMPn]掛起MBOXn郵箱,以防止瞬間接收到多組數(shù)據(jù);
(2)通過CANGIF0/1[MIV0/1],確認接收到數(shù)據(jù)郵箱為MBOXn,并讀取接收的數(shù)據(jù);
(3)置位CANRMP[RMPn]清除郵箱MBOXn掛起狀態(tài),準備接收下一組數(shù)據(jù)。


4.通過CANMD[MDn]配置另一Mailbox郵箱MBOXn為發(fā)送,使能CANME[MEn]打開發(fā)送郵箱,使能CANTRS[TRSn]啟動發(fā)送郵箱,發(fā)送數(shù)據(jù)到緩沖區(qū) Transmit Buffer;
5.使能CANTIOC[TXFUNC]打開發(fā)送線,通過GPIOMUX所定義CANTX發(fā)送引腳將緩沖區(qū)Transmit Buffer數(shù)據(jù)發(fā)送到CAN總線。
由此設(shè)計通過USB_CAN分析儀將昊芯HXS320F28034芯片與上位機軟件通訊實例:采用昊芯HXS320F28034芯片、CAN收發(fā)器與USB_CAN分析儀,通過USB_CAN網(wǎng)絡(luò)調(diào)試上位機軟件,向CPU發(fā)送任意一組數(shù)據(jù),CPU接收所發(fā)送的數(shù)據(jù),硬件連接如下圖所示:

基于以上分析,在CDK上開發(fā)CAN通信程序,代碼包括:CAN的GPIO配置、初始化參數(shù)配置、CAN發(fā)送程序與接收中斷服務程序,主程序調(diào)用執(zhí)行。主要代碼如下:
1.intmain(void)2.{3.InitSysCtrl();//系統(tǒng)時鐘初始化4.CAN_Init();//CAN的初始化參數(shù)配置5.InitECanaGpio();//CAN的Gpio引腳配置6.EALLOW;7.ECanaRegs.CANMIM.bit.MIM0=1;//打開接收掩碼,接收到數(shù)據(jù)觸發(fā)中斷8.ECanaRegs.CANMIL.bit.MIL0=0;//選擇EcanA中斷09.ECanaRegs.CANGIM.bit.I0EN=1;//使能中斷010.PieVectTable.ECAN0INTA=&eCanRxIsr;//CANA0接收中斷入口11.EDIS;12.PieCtrlRegs.PIEIER9.bit.INTx5=1;//使能ECAN1中斷13.IER|=M_INT9;//EnableCPUINT914.EINT;15.while(1){16.CAN_Tx();//發(fā)送數(shù)據(jù)17.}18.return0;19.}其中,CAN的初始化參數(shù)配置代碼為:
1.voidCAN_Init()2.{3.volatilestructECAN_REGSECanaShadow;4.EALLOW;5./*配置RX與TX引腳*/6.ECanaShadow.CANTIOC.all=P_ECanaRegs->CANTIOC.all;7.ECanaShadow.CANTIOC.bit.TXFUNC=1;8.P_ECanaRegs->CANTIOC.all=ECanaShadow.CANTIOC.all;9.ECanaShadow.CANRIOC.all=P_ECanaRegs->CANRIOC.all;10.ECanaShadow.CANRIOC.bit.RXFUNC=1;11.P_ECanaRegs->CANRIOC.all=ECanaShadow.CANRIOC.all;12./*清RMPn,GIFn位*/13.P_ECanaRegs->CANRMP.all=0xFFFFFFFF;14./*清中斷標志*/15.P_ECanaRegs->CANGIF0.all=0xFFFFFFFF;16.P_ECanaRegs->CANGIF1.all=0xFFFFFFFF;17.18./*初始化配置,寫入CAN波特率*/19.ECanaShadow.CANMC.all=P_ECanaRegs->CANMC.all;20.ECanaShadow.CANMC.bit.CCR=1;//SetCCR=121.P_ECanaRegs->CANMC.all=ECanaShadow.CANMC.all;22.ECanaShadow.CANES.all=P_ECanaRegs->CANES.all;23.do24.{25.ECanaShadow.CANES.all=P_ECanaRegs->CANES.all;26.}while(ECanaShadow.CANES.bit.CCE!=1);//WaitforCCEbittobeset..27.//Bitrate=SYSCLKOUT/2/{(BRP+1)*[(TSEG1+1)+(TSEG2+1)+1,28.//TSEG1≥3,TSEG2≥229.ECanaShadow.CANBTC.bit.BRPREG=2;30.ECanaShadow.CANBTC.bit.TSEG2REG=4;31.ECanaShadow.CANBTC.bit.TSEG1REG=13;32.P_ECanaRegs->CANBTC.all=ECanaShadow.CANBTC.all;33.ECanaShadow.CANMC.all=P_ECanaRegs->CANMC.all;34.ECanaShadow.CANMC.bit.CCR=0;//SetCCR=035.P_ECanaRegs->CANMC.all=ECanaShadow.CANMC.all;36.ECanaShadow.CANES.all=P_ECanaRegs->CANES.all;37.do38.{39.ECanaShadow.CANES.all=P_ECanaRegs->CANES.all;40.}while(ECanaShadow.CANES.bit.CCE!=0);//WaitforCCEbittobecleared..41.42./*屏蔽所有信箱寄存器*/43.//RequiredbeforewritingtheMSGIDs44.P_ECanaRegs->CANME.all=0;45./*配置MBOX1的MSGID*/46.P_ECanaMboxes->MBOX1.MSGID.all=0x00040000;47.P_ECanaMboxes->MBOX0.MSGID.all=0x00040000;48./*配置MBOX1/MBOX0的傳輸字節(jié)為2*/49.ECanaMboxes.MBOX1.MSGCTRL.bit.DLC=0x2;50.ECanaMboxes.MBOX0.MSGCTRL.bit.DLC=0x2;51./*配置MBOX0為接收,MBOX1為發(fā)送*/52.ECanaRegs.CANMD.bit.MD0=1;53.ECanaRegs.CANMD.bit.MD1=0;54./*使能MBOX0andMBOX1*/55.ECanaRegs.CANME.bit.ME0=1;56.ECanaRegs.CANME.bit.ME1=1;57.//掛起接收郵箱,以觸發(fā)接收中斷58.if(ECanaRegs.CANRMP.bit.RMP0==0)59.{60.ECanaRegs.CANRMP.bit.RMP0=1;61.}62.EDIS;63.return;64.}CAN的發(fā)送程序代碼為:
1.voidCAN_Tx(void)2.{3.//等待MBOX0接收成功,讀取消息4.while(ECanaRegs.CANRMP.bit.RMP0!=1){}5.ECanaMboxes.MBOX1.MDL.byte.BYTE0=(receive_data&0xff);6.ECanaMboxes.MBOX1.MDL.byte.BYTE1=((receive_data>>8)&0xff);7.8.ECanaRegs.CANTRS.bit.TRS1=1;//發(fā)送MBOX1數(shù)據(jù)到MBOX09.}CDK上開發(fā)CAN通信收發(fā)程序,其編譯結(jié)果為:

編譯通過后,就可以開始調(diào)試了,調(diào)試后,可通過USB_CAN網(wǎng)絡(luò)通信軟件,查看發(fā)送與接收到的數(shù)據(jù)如下圖:

-
通信
+關(guān)注
關(guān)注
18文章
6450瀏覽量
140269
發(fā)布評論請先 登錄
芯動科技與雄立科技合作高性能100G網(wǎng)絡(luò)通信芯片一次流片成功
通信光纜最大芯數(shù)多少芯
TCAN1051系列CAN收發(fā)器:工業(yè)網(wǎng)絡(luò)通信的可靠之選
瑞芯微雙芯片助力廣汽昊鉑GT攀登版正式下線
喜訊|昊芯RISC-V DSP榮獲“中國芯”RISC-V生態(tài)推廣獎
力芯微邏輯類IC電平轉(zhuǎn)換系列芯片助力網(wǎng)絡(luò)傳輸
【作品合集】中科昊芯Core_DSC280025C開發(fā)板測評
納芯微推出NSR926X系列車規(guī)級SBC系統(tǒng)基礎(chǔ)芯片
【中科昊芯Core_DSC280025C開發(fā)板試用體驗】---LED閃爍燈
芯新聞|昊芯亮相第五屆RISC-V中國峰會,共繪開源芯片新紀元
【中科昊芯Core_DSC280025C開發(fā)板試用體驗】+3.DSP基礎(chǔ)外設(shè)調(diào)試(含源碼)
【中科昊芯Core_DSC280025C開發(fā)板試用體驗】+1.開箱之浮點計算對比
平頭哥羽陣芯片助力菜鳥打造高性價比RFID數(shù)字供應鏈解決方案
平頭哥鎮(zhèn)岳510芯片的QoS技術(shù)解析
芯教程丨平頭哥助力昊芯HX2000系列芯片CAN網(wǎng)絡(luò)通信
評論