0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

芯教程丨平头哥助力昊芯HX2000系列芯片CAN网络通信

中科昊芯 2022-09-19 10:20 次阅读

随着能源日益短缺,科技的日趋智能化,复杂高效的多机控制,已日趋成为当今社会迅速发展的必然需求。昊芯顺应时代要求,推出适用于高精度工业自动化运动控制的新版HXS320F28034数字信号处理器DSP,其CAN模块以Mailbox信箱MBOXn控制与传输数据,实现DSP之间的控制指令高效收发,可更有效助力于工程师实现高效的多DSP控制指令收发,广泛应用于电动汽车、风力发电、轨道交通、机器人等高复杂度控制领域。

e675d328-35dd-11ed-9ade-dac502259ad0.png

自平头哥半导体有限公司的剑池集成开发环境(简称“CDK”)支持HX2000系列芯片调试以来,本期以USB_CAN通信收发实例讲解CAN网络通信功能。

HX2000系列CAN模块原理如下图,通过CANMC[CCR]使能进入初始化配置模式,等待CANMC[CCE]置高写入CANBTC位配置波特率;等待CANMC[CCE]拉低,完成初始化;

通过Mailbox邮箱MBOXn.MSGCTRL的RTR位配置远程传输请求,TPL位配置MBOXn传输优先级,DLC位配置传输0~8个字节,传输过程如下:

1.CAN总线通过CAN传输芯片向CAN发送数据,使能CANRIOC[RXFUNC]打开接收线,接收来自GPIOMUX所定义CANRX接收引脚上的数据,装载到缓冲区Receive Buffer;

2.通过CANMD[MDn]配置Mailbox邮箱MBOXn为接收,使能CANME[MEn]打开邮箱MBOXn,接收来自缓冲区中的数据;

3.全局中断标志的设置取决于CANGIM寄存器中GIL位的设置。如果设置了该位,则全局中断在CANGIF1寄存器中设置位;否则,在CANGIF0寄存器中设置。通过CANMIM[MIMn]配置接收掩码中断使能;通过CANMIL[MILn]配置,将MBOXn接收中断,映射到中断ECAN0INTA或ECAN1INTA;使能CANGIM[I0EN/I1EN]打开中断信号,MBOXn接收到数据时,将产生一个接收中断,使CANGIF0/1[MIV0/1]中相应接收邮箱MBOXn的邮箱号置位;通过PIE响应CPU执行接收中断程序:

(1)置位CANRMP[RMPn]挂起MBOXn邮箱,以防止瞬间接收到多组数据;

(2)通过CANGIF0/1[MIV0/1],确认接收到数据邮箱为MBOXn,并读取接收的数据;

(3)置位CANRMP[RMPn]清除邮箱MBOXn挂起状态,准备接收下一组数据。

e6a6ec88-35dd-11ed-9ade-dac502259ad0.jpg

e6c4780c-35dd-11ed-9ade-dac502259ad0.jpg

4.通过CANMD[MDn]配置另一Mailbox邮箱MBOXn为发送,使能CANME[MEn]打开发送邮箱,使能CANTRS[TRSn]启动发送邮箱,发送数据到缓冲区 Transmit Buffer;

5.使能CANTIOC[TXFUNC]打开发送线,通过GPIOMUX所定义CANTX发送引脚将缓冲区Transmit Buffer数据发送到CAN总线。

由此设计通过USB_CAN分析仪将昊芯HXS320F28034芯片与上位机软件通讯实例:采用昊芯HXS320F28034芯片、CAN收发器与USB_CAN分析仪,通过USB_CAN网络调试上位机软件,向CPU发送任意一组数据,CPU接收所发送的数据,硬件连接如下图所示:

e6ed3e04-35dd-11ed-9ade-dac502259ad0.jpg

基于以上分析,在CDK上开发CAN通信程序,代码包括:CAN的GPIO配置、初始化参数配置、CAN发送程序与接收中断服务程序,主程序调用执行。主要代码如下:

1.intmain(void)
2.{
3.InitSysCtrl();//系统时钟初始化
4.CAN_Init();//CAN的初始化参数配置
5.InitECanaGpio();//CAN的Gpio引脚配置
6.EALLOW;
7.ECanaRegs.CANMIM.bit.MIM0=1;//打开接收掩码,接收到数据触发中断
8.ECanaRegs.CANMIL.bit.MIL0=0;//选择EcanA中断0
9.ECanaRegs.CANGIM.bit.I0EN=1;//使能中断0
10.PieVectTable.ECAN0INTA=&eCanRxIsr;//CANA0接收中断入口
11.EDIS;
12.PieCtrlRegs.PIEIER9.bit.INTx5=1;//使能ECAN1中断
13.IER|=M_INT9;//EnableCPUINT9
14.EINT;
15.while(1){
16.CAN_Tx();//发送数据
17.}
18.return0;
19.}

其中,CAN的初始化参数配置代码为:

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=1
21.P_ECanaRegs->CANMC.all=ECanaShadow.CANMC.all;
22.ECanaShadow.CANES.all=P_ECanaRegs->CANES.all;
23.do
24.{
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≥2
29.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=0
35.P_ECanaRegs->CANMC.all=ECanaShadow.CANMC.all;
36.ECanaShadow.CANES.all=P_ECanaRegs->CANES.all;
37.do
38.{
39.ECanaShadow.CANES.all=P_ECanaRegs->CANES.all;
40.}while(ECanaShadow.CANES.bit.CCE!=0);//WaitforCCEbittobecleared..
41.
42./*屏蔽所有信箱寄存器*/
43.//RequiredbeforewritingtheMSGIDs
44.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的传输字节为2*/
49.ECanaMboxes.MBOX1.MSGCTRL.bit.DLC=0x2;
50.ECanaMboxes.MBOX0.MSGCTRL.bit.DLC=0x2;
51./*配置MBOX0为接收,MBOX1为发送*/
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.//挂起接收邮箱,以触发接收中断
58.if(ECanaRegs.CANRMP.bit.RMP0==0)
59.{
60.ECanaRegs.CANRMP.bit.RMP0=1;
61.}
62.EDIS;
63.return;
64.}

CAN的发送程序代码为:

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;//发送MBOX1数据到MBOX0
9.}

CDK上开发CAN通信收发程序,其编译结果为:

e703b9e0-35dd-11ed-9ade-dac502259ad0.jpg

编译通过后,就可以开始调试了,调试后,可通过USB_CAN网络通信软件,查看发送与接收到的数据如下图:

e72a0f14-35dd-11ed-9ade-dac502259ad0.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    6029

    浏览量

    135964
收藏 人收藏

    评论

    相关推荐

    喜讯!点亮华东服务新地标,杭州办开业大吉!

    杭州办公室开业啦!为了积极响应战略发展的业务需求,进一步拓宽当地服务版图。2024年
    的头像 发表于 12-17 17:33 117次阅读
    喜讯!点亮华东服务新地标,<b class='flag-5'>昊</b><b class='flag-5'>芯</b>杭州办开业大吉!

    启源受邀出席2024成都RDI生态创新论坛

    11月20日,2024成都RDI生态创新论坛盛大召开。启源创始人卢笙受邀出席该会议,并作题为《基于RISC-V的网络通信芯片NFP》的主旨演讲。
    的头像 发表于 11-20 18:03 485次阅读

    平头半导体荣获“中国”优秀技术创新产品奖

    近日,由中国电子信息产业发展研究院主办的2024中国微电子产业促进大会暨第十九届“中国”优秀产品征集结果发布仪式在珠海横琴举办。平头半导体旗下企业级SSD主控芯片--镇岳510荣获
    的头像 发表于 11-08 16:55 490次阅读

    中科携基于自研RISC-V DSP芯片的无人机解决方案完美收官2024慕尼黑华南电子展

    作为全球电子技术领域的顶级盛会,慕尼黑华南电子展于10月14日至16日在深圳国际会展中心隆重开幕。在本次展会上,展示了无人机等多款自主研发的解决方案,以及HX2000系列DSP家族
    的头像 发表于 10-19 08:00 550次阅读
    中科<b class='flag-5'>昊</b><b class='flag-5'>芯</b>携基于自研RISC-V DSP<b class='flag-5'>芯片</b>的无人机解决方案完美收官2024慕尼黑华南电子展

    邀请函|携多款解决方案亮相慕尼黑华南展,深圳见!

    在深秋的璀璨光芒下,慕尼黑华南电子生产设备展将于2024年10月14日至16日,再次登陆深圳这座充满活力与创新的国际大都市。将携基于自研RISC-VDSP的无人机等多款解决方案以及HX2000
    的头像 发表于 10-11 08:00 457次阅读
    邀请函|<b class='flag-5'>昊</b><b class='flag-5'>芯</b>携多款解决方案亮相慕尼黑华南展,深圳见!

    新闻|携搭载自研HaawkFoc算法的E-bike解决方案首次亮相RISC-V峰会

    决方案恭候您的光临。8月22日下午,工程师张伟杰发表主题为“高性能RISC-VDSP,助力先进制造出海”的演讲,首次对外介绍了公司基于自研的F280025RIS
    的头像 发表于 08-30 11:53 643次阅读
    <b class='flag-5'>芯</b>新闻|<b class='flag-5'>昊</b><b class='flag-5'>芯</b>携搭载自研HaawkFoc算法的E-bike解决方案首次亮相RISC-V峰会

    首发!携最新F280013x及多款解决方案完美收官2024慕尼黑上海展

    携带最新产品及应用案例如约而至,十多个系列的RISC-VDSP及多款解决方案精彩亮相。新品亮相-F280013X系列首发HX2000系列最新推出的F280013x子
    的头像 发表于 07-20 08:03 525次阅读
    首发!<b class='flag-5'>昊</b><b class='flag-5'>芯</b>携最新F280013x及多款解决方案完美收官2024慕尼黑上海展

    力特车规TVS产品助力CAN/LIN通讯接口保护

    力特深耕车规CAN/LIN通讯接口芯片,在大量的客户项目应用中深入了解客户需求后,推出了汽车级TVS防护器件,助力车规CAN/LIN通讯接
    的头像 发表于 07-02 08:07 481次阅读
    <b class='flag-5'>芯</b>力特车规TVS产品<b class='flag-5'>助力</b><b class='flag-5'>CAN</b>/LIN通讯接口保护

    跨越距离障碍:PCAN系列网关在远程CAN网络通信的应用潜力

    导读在智能化技术的迅猛发展浪潮中,远程控制与数据传输的高效性变得至关重要,它们已成为现代自动化和物联网领域的关键驱动力。虹科PCAN-EthernetGateway系列网关突破了传统CAN网络的物理
    的头像 发表于 06-27 08:04 622次阅读
    跨越距离障碍:PCAN<b class='flag-5'>系列</b>网关在远程<b class='flag-5'>CAN</b><b class='flag-5'>网络通信</b>的应用潜力

    如何打造芯片国产化开源生态?Model系列HMI芯片平头内核,SDK开源贯彻到底!

    “卡脖子”的困境,其针对泛工业领域研发的Model系列HMI芯片采用国产平头芯片架构,坚持SDK开源,将“国产”“开源”等理念贯彻到底。
    的头像 发表于 06-18 09:38 596次阅读
    如何打造<b class='flag-5'>芯片</b>国产化开源生态?Model<b class='flag-5'>系列</b>HMI<b class='flag-5'>芯片</b>:<b class='flag-5'>平头</b><b class='flag-5'>哥</b>内核,SDK开源贯彻到底!

    电子语音芯片NVB系列数据手册

    电子语音芯片NVB系列数据手册v1.7
    发表于 06-18 09:10 0次下载

    公司亮相“2024年能源网络通信创新应用大会”

    4月17日至19日,以“加快推进通信数智化,助力构建新型能源体系”为主题的“2024年能源网络通信创新应用大会”在成都召开。智公司作为协办单位携多款产品亮相大会。 此次大会旨在促进能
    的头像 发表于 04-21 09:49 1326次阅读
    智<b class='flag-5'>芯</b>公司亮相“2024年能源<b class='flag-5'>网络通信</b>创新应用大会”

    F2837x系列首款芯片F28379D正式推出,HX2000系列当前最高性能

    新春伊始,正式发布第三代RISC-VDSP系列F2837x家族首位成员——F28379D,这也是甲辰龙年推出的首款
    的头像 发表于 02-24 08:03 1863次阅读
    <b class='flag-5'>昊</b><b class='flag-5'>芯</b>F2837x<b class='flag-5'>系列</b>首款<b class='flag-5'>芯片</b>F28379D正式推出,<b class='flag-5'>HX2000</b><b class='flag-5'>系列</b>当前最高性能

    5G网络通信有哪些技术痛点?光耦技术在5G网络通信的应用

    5G网络通信有哪些技术痛点?光耦技术在5G网络通信的应用  5G网络通信的技术痛点: 1. 频谱资源短缺:5G通信需要更高的频谱资源来支持更大的数据传输量和更高的速度,但是目前无线
    的头像 发表于 02-18 17:13 964次阅读

    阿里平头半导体成立新公司

    近日,上海得达必科技有限公司正式成立,该公司由阿里旗下平头半导体有限公司的全资子公司浙江数蜂科技有限公司全资持股。
    的头像 发表于 01-31 17:26 1295次阅读