GD32F3开发进阶教程 课件 ch10CAN通信实验_第1页
GD32F3开发进阶教程 课件 ch10CAN通信实验_第2页
GD32F3开发进阶教程 课件 ch10CAN通信实验_第3页
GD32F3开发进阶教程 课件 ch10CAN通信实验_第4页
GD32F3开发进阶教程 课件 ch10CAN通信实验_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

CAN通信实验“第十章《GD32F3开发进阶教程——基于GD32F303ZET6》01实验内容本章的主要内容是学习CAN总线的基本原理,包括CAN的物理层和协议层,了解GD32F30x系列微控制器上的CAN控制器和相关固件库函数,最后基于GD32F3苹果派开发板设计一个CAN通信实验,将CAN控制器配置为正常工作模式,采用CAN转USB模块连接开发板与计算机,通过操作LCD屏上的GUI,实现开发板与计算机之间的数据通信。实验内容02实验原理CAN模块CAN模块电路原理图如图10-1所示。1.CAN物理层(1)总线网络CAN物理层的形式主要有两种:闭环总线通信网络和开环总线通信网络。CAN闭环总线通信网络如图10-2所示,它是一种遵循ISO11898-2标准的高速、短距离“闭环网络”总线最大长度为40米通信速度最高为1Mbps,总线的两端各要求有一个1202Ω的电阻,用于避免信号的反射和回波。CAN协议简介CAN协议简介CAN协议简介CAN开环总线通信网络如图10-3所示。0203通信节点:CAN总线上可以挂载多个通信节点,节点之间的信号都通过总线传输。由于CAN通信协议不对节点进行地址编码,而是对数据内容进行编码,因此只要总线的负载足够,理论上网络中的节点个数不受限制。差分信号:与使用单条信号线的电压表示逻辑的方式不同,差分信号传输时需要两条信号线,通过这两条信号线的电压差值来表示逻辑0和1相较于单信号线的输方式,使用分信号传输具有抗干扰能力强和时序定位精确的优点。CAN协议简介CAN协议简介CAN协议中对其使用的差分信号线CANHgh和CANLow做了规定如表10-1所示。2.CAN协议层(1)时序与同步CAN协议属于异步通信协议,没有时钟信号线,连接在同一个总线网络上的各个节点使用约定的波特率进行通信。CAN还会使用“位同步”的方式来抗干扰、吸收误差,实现对总线电平信号的正确采样,确保通信时序正常。CAN协议简介CAN协议简介为了实现位同步,CAN协议把每一个数据位的时序分解成如图10-4所示。CAN协议简介各段的作用如表10-2所示。CAN协议简介①硬同步:当总线出现从隐性电平到显性电平的跳变时,节点将其视为位的起始段(SS),以获得同步,如图10-5所示。CAN协议简介②重新同步:当节点检测出跳变沿有2Tq的滞后时,PSB1段末尾将会插入相应的长度(即2Tq)以调整同步,如图10-6所示。CAN协议简介当节点检测出跳变沿有2Tq的提前时,PSB2段末尾将会减小相应的长度(即2Tq)以调整同步,如图10-7所示。(2)帧结构前面介绍了CAN协议中1位数据的传输方式,下面介绍CAN的结构。当数据包被传输到其他设备时,只要设备按规定的格式解读,就能还原出原始数据,这样的报文(Message)就被称为CAN的数据(Frame)。CAN一共规定了种类型的,本章仅对最主要的数据顿做简要介绍。CAN协议简介CAN协议简介数据帧构成如图10-8所示,数据以1个显性位开始,7个连续的隐性位结束,在它们之间还包含仲裁段、控制段、数据段、CRC段和ACK段。CAN协议简介仲裁过程如图10-9所示。GD32F30x系列微控制器的CAN外设简介1.通信模式CAN总线控制器有4种通信模式,如图10-10所示。GD32F30x系列微控制器的CAN外设简介2.位时序与同步对比标准CAN协议,GD32CAN控制器的位时序如图10-11所示。3.波特率波特率指每秒传输码元的数目,而比特率为每秒传输的比特(bit)数。4.过滤器I2C总线协议采用地址来区分节点,而在CAN协议中,消息的标识符与节点地址无关但与消息内容有关。GD32F30x系列微控制器的CAN外设简介0102一个32位过滤器,检查SFID[10:0]、EFID[17:0]、IDE和RTR位。两个16位过滤器,检查SFID[10:01、RTR、IDE和EFID17:15]。GD32F30x系列微控制器的CAN外设简介根据过滤ID长度分类,CAN过滤器的工作模式有以下两种:0102标识符列表模式掩码模式GD32F30x系列微控制器的CAN外设简介根据过滤模式分类,有以下两种模式:GD32F30x系列微控制器的CAN外设简介如表10-4所示,在掩码模式下,第一个寄存器存储要筛选的ID,第二个寄存器存储掩码,掩码为1的部分表示该位必须与D中的内容一致,筛选的结果为表中第三行的I值,它是一组包含多个ID的值,其中x表示该位可以为1或0。CAN数据接收和数据发送路径CAN数据接收过程如图10-13所示。CAN数据接收和数据发送路径CAN数据发送过程如图10-14所示。1.can_initcan_init函数的功能是初始化CAN外设。can_parameter_struct结构体成员变量定。2.can_filter_initcan_filter_init函数的功能是初始化CAN过滤器。can_flter_parameter_struct结构体成员变量。3.can_message_transmitcan_message_transmit函数的功能是传输CAN报文。can_trasnmit_message_struct结构体。CAN部分固件库函数4.can_message_receivecan_message_receive函数的功能是接收CAN报文。can_receive_message_struct结构体成员变量。CAN部分固件库函数03实验代码解析0102CAN.h文件:在CANh文件的“宏定义”区,首先定义了CAN的波特率。在“API函数声明”区,声明了3个API函数。CAN.c文件:在“内部函数声明”区,声明了ConfigCANO函数,用于配置CANO。CAN文件对下面按照顺序解释说明USBD_LP_CANO_RXOIROHandle函数中的语句。(1)第1至6行代码:当CANO接收到数据时,调用can_message_receive函数把报文从FIFO复制到接收结构体。(2)第8至13行代码:报文成功通过CAN过滤器,接收结构体存储相关的信息后,对其再次进行简单的检查,检查其校验是否为标准格式。若是,则将数据保存到数据缓冲区。CAN文件对下面按照顺序解释说明ImitCAN函数中的语句。(1)第5行代码初始化接收循坏队列其长度与接收循环队列缓冲区sarrRecBuf相等。(2)第6至9行代码:将接收缓冲区sarrRecBuf全部清零。(3)第11行代码:调用ClearQucue函数,清空接收循环队列。(4)第12行代码:调用ConfigCANO函数,配置CAN的GPIO。CAN文件对Main.c文件在Proc2msTask函数中调用CANTopTask函数,每40ms执行次CAN实验应用层模块任务,如程序清单10-10所示。实验结果下载程序并进行复位,可以观察到开发板上的LCD屏幕显示CAN通信实验的GUI界面。实验结果1.将数据从计算机发送到开发板打开配套资料包“\02相关软件”文件夹下的“UART转CAN配置软件exe”,单击“串口设置”弹出如图10-16所示对话框,设置端口和波特率,单击“打开”按钮。若未能检测到串口,请检查模块是否亮起黄色LED灯以及端口号是否与模块对应。实验结果当配置软件显示如图10-17右侧所示内容时,说明模块连接成功且正常工作。然后参考图10-17左侧内容进行配置。实验结果单击“滤波器”栏下的“计算”按设置滤波器(过滤器),进入如图10-18所示的滤波器计算界面。在“可通过ID栏”中输入5A5,“格式”选择“标准”,“类型”选择“数据帧”,并单击“添加”按钮。实验结果完成上述设置后,单击上方菜单栏“设置全部”按钮,右侧显示区域出现如图10-19所示的提示信息,则表示模块配置完成。实验结果单击“退出设置”,进入发送界面,如图10-20所示。实验

温馨提示

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

评论

0/150

提交评论