单片机硬件CAN通信的应用_第1页
单片机硬件CAN通信的应用_第2页
单片机硬件CAN通信的应用_第3页
单片机硬件CAN通信的应用_第4页
单片机硬件CAN通信的应用_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CAN的应用非常广泛,现在很多单片机都内部集成了CAN控制器,今天结合瑞萨RA2单片机的CAN控制器模块,给大家描述一下其应用案例。瑞萨RA2L1系列MCU简介RA2L1产品组基于Arm®

Cortex®-M23核心(现今Arm®

Cortex-M系列中功耗最低的CPU)。这款产品采用优化的制程和瑞萨电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。RA2L1产品组能够支持1.6V至5.5V宽电压工作,CPU时钟频率最高48MHz,且运行模式电流和待机模式电流更低。RA2L1产品群配备了增强型电容式触摸感应单元(CTSU2)、CAN控制器局域网总线,串行通信接口、高精度模拟电路和定时器。产品封装从48引脚到100引脚。一控制器局域网CAN模块简介控制器局域网(CAN)模块使用基于消息的协议在电磁噪声应用中的多个从机和主机之间接收和传输数据。该模块符合ISO11898-1(CAN2.0A/CAN2.0B)标准,最多支持32个邮箱,可配置为普通邮箱和FIFO模式下的发送或接收。支持标准(11位)和扩展(29位)消息格式。CAN模块需要额外的外部CAN收发器。CAN模块框图注意事项:CAN需要外部高速晶体作为时钟源,使用CAN模块前需要先配置好外部高速时钟。CAN模块参数规格二RA2L1CAN通信应用例程使用官方e2

studio开发工具创建RA2L1工程,并添加CAN外设模块底层应用。

配置CAN模块参数(包括通信速率、引脚配置等)。

三CAN应用参考代码#defineWAIT_TIME(500U)//waittimevalue#defineCAN_MAILBOX_NUMBER_TX(0U)//mailboxnumber#defineCAN_MAILBOX_NUMBER_RX(1U)#defineCAN_FRAME_TRANSMIT_DATA_BYTES(8U)//datalength#defineZERO(0U)/*Privateglobalvariables*//*Flags,setfromCallbackfunction*/staticvolatileboolb_can_tx=false;//CANtransmissionstatusstaticvolatileboolb_can_rx=false;//CANreceivestatusstaticvolatileboolb_can_err=false;//CANerrorstatus/*CANframesfortxandrx*/staticcan_frame_tg_can_tx_frame;//CANtransmitframestaticcan_frame_tg_can_rx_frame;//CANreceiveframevoidhal_entry(void){/*TODO:addyourowncodehere*/fsp_err_terr=FSP_SUCCESS;uint32_ttime_out=WAIT_TIME;//timeoutuint8_tcan_tx_msg[CAN_FRAME_TRANSMIT_DATA_BYTES]={0,1,2,3,4,5,6,7};uint8_tcan_rx_msg[CAN_FRAME_TRANSMIT_DATA_BYTES]={0};/*InitializestheCGCmodule.*/err=R_CGC_Open(&g_cgc0_ctrl,&g_cgc0_cfg);/*Handleanyerrors.Thisfunctionshouldbedefinedbytheuser.*/assert(FSP_SUCCESS==err);/*StarttheCGC_CLOCK_MAIN_OSC.*/err=R_CGC_ClockStart(&g_cgc0_ctrl,CGC_CLOCK_MAIN_OSC,NULL);assert(FSP_SUCCESS==err);/*InitializeCANmodule*/err=R_CAN_Open(&g_can_ctrl,&g_can_cfg);/*Errortrap*/if(FSP_SUCCESS!=err){__asm("BKPT#0\n");}g_can_tx_frame.id=CAN_MAILBOX_NUMBER_TX;g_can_tx_frame.type=CAN_FRAME_TYPE_DATA;g_can_tx_frame.data_length_code=CAN_FRAME_TRANSMIT_DATA_BYTES;/*copythetxdataframewithTX_MSG*/memcpy((uint8_t*)&g_can_tx_frame.data[ZERO],(uint8_t*)&can_tx_msg[ZERO],CAN_FRAME_TRANSMIT_DATA_BYTES);err=R_CAN_Write(&g_can_ctrl,CAN_MAILBOX_NUMBER_TX,&g_can_tx_frame);/*Errortrap*/if(FSP_SUCCESS!=err){err=R_CAN_Close(&g_can_ctrl);if(FSP_SUCCESS!=err){__asm("BKPT#0\n");}}while(1){/*checkifreceiveflagisset*/if(true==b_can_rx){/*Resetflagbit*/b_can_rx=false;g_can_rx_frame.data[CAN_FRAME_TRANSMIT_DATA_BYTES-1]=g_can_rx_frame.id;/*Transmittherxdataframeasacknowledgingthedatatransferissuccessful*/err=R_CAN_Write(&g_can_ctrl,CAN_MAILBOX_NUMBER_TX,&g_can_rx_frame);/*Errortrap*/if(FSP_SUCCESS!=err){err=R_CAN_Close(&g_can_ctrl);if(FSP_SUCCESS!=err){__asm("BKPT#0\n");}}/*waitfortransmitflagbittoset*/while((true!=b_can_tx)&&(time_out--));if(0==time_out){__asm("BKPT#0\n");}/*Resetflagbit*/b_can_tx=false;}}}voidcan_callback(can_callback_args_t*p_args){switch(p_args->event){caseCAN_EVENT_TX_COMPLETE:{b_can_tx=true;//setflagbitbreak;}caseCAN_EVENT_RX_COMPLETE:{b_can_rx=true;//copythereceiveddatatorx_framememcpy(&g_can_rx_frame,p_args->p_frame,sizeof(can_frame_t));break;}caseCAN_EVENT_MAILBOX_MESSAGE_LOST://overwrite/overrunerroreventcaseCAN_EVENT_BUS_RECOVERY://BusrecoveryerroreventcaseCAN_EVENT_ERR_BUS_OFF://errorBusOffeventcaseCAN_EVENT_ERR_PASSIVE://errorpassiveeventcaseCAN_EVENT_ERR_WARNING://errorwarn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论