STM32CubeMX 之 CAN通讯

发布时间:2022-12-08  

一、CAN总线简介

CAN是控制器局域网络(Controller Area Network,CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的现场总线之一。


CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,信号是以两线之间的“差分”电压形式出现,这点与RS485类似,但两者电平值不同。CAN总线电平分为显性电平和隐性电平。


CAN总线采用两种互补的逻辑数值“显性”和“隐性”。其中,“显性”数值表示逻辑“0”,而“隐性”表示逻辑“1”。


当总线上同时出现“显性”位和“隐性”位时,最终呈现在总线上的是“显性”位。 在“隐性”状态下,VCAN_H和VCAN_L被固定于平均电压电平,Vdiff近似为零,此时VCAN_H和VCAN_L的标称值为2.5V。“显性”位以大于最小阀值的差分电压表示,此时VCAN_H的标称值为3.5V,VCAN_L的标称值为1.5V,如下图所示:

二、CAN帧结构

CAN总线节点上的节点发送数据,是以报文的形式广播给网络中所有节点。收发器接收到数据就把数据传送给控制器,再由控制器检查判断是不是所需数据,不是则忽略。

● 网络上任何一个节点在任何时候都可以发送数据;

● 多个节点发送数据,优先级低主动退出发送;

● 短帧结构,每帧数据信息为0~8字节(具体用户定义),对数据编码而不是地址编码;

● CAN每帧都有CRC校验和其他检验措施,严重错误的情况下具有自动关闭输出的功能。

至于报文传输,则由以下5个不同的帧类型所表示和控制:

● 数据帧:数据帧携带数据从发送器至接收器。

● 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。

● 错误帧:任何单元检测到总线错误就发出错误帧。

● 帧间隔:数据帧(或远程帧)通过帧间空间与前述的各帧分开。

● 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供附加的延时。


三、硬件设计

现在很多单片机中内置CAN总线协议控制器,只要外接总线驱动芯片和适当的抗干扰电路就可以很方便地建立一个CAN总线智能测控节点。

驱动芯片如下:

四、软件设计

这里以STM32L431单片机为例,建立STM32CubeMX工程,使能CAN接口,设置时钟及分配系数等参数,如下图所示:

STM32L431的系统时钟为80M,上图中设置的波特率为100kbps。计算方法如下:

CAN波特率为 = 系统时钟/Prescaler/ (SJW+BS1+BS2) = 80MHz/32/(1+16+8) = 100KHz

使能接收中断:

生成代码后,添加CAN滤波器配置函数,如下:

编写接收中断函数和发送数据函数:

在主函数中调用滤波器配置函数,启动CAN总线,使能接收中断,并循环发送测试数据:

通过USB转CAN的工具可以在电脑端查看数据是否成功。可以看到,数据可以正常发送。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>