datasheet

CAN总线软件编程

2016-01-22来源: eefocus关键字:CAN总线  软件编程
在编写CAN总线通讯程序时,主要编写函数由初始化函数,发送函数和接收函数组成。

其中发送函数一般写为主动发送函数,接收函数一般采用中断接收。下面就简单介绍一下三个函数的编写。

1 SJA1000寄存器初始化配置顺序

(1)进入复位模式,进行配置

(2)配置时钟分频寄存器,决定Peil模式还是Basic模式。

(3)配置总线定时寄存器,确定波特率。

(4)配置中断使能寄存器,决定使用那几个中断

(5)配置输出控制寄存器

(6)配置验收码和屏蔽码,决定接收哪一类节点的数据

(7)退出复位模式,进入正常工作模式。

2 发送数据顺序

(1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被锁。

(2)配置发送缓冲区。

(3)配置命令寄存器,启动发送。

3 接收数据顺序

(1)采用中断接收,关CPU中断。

(2)判断是不是接收中断。

(3)判断是远程帧还是数据帧

(4)读取数据

(5)开中断

关键字:CAN总线  软件编程

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/qrs/article_26505.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:I2C 总线协议的简单总结
下一篇:PROFIBUS-DP与PROFIBUS-PA总线的区别

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

CAN总线冷知识-边沿台阶是怎么来的?

你了解CAN总线波形吗?你知道是什么因素造成CAN信号不稳定的吗?本文将带你探究影响CAN波形稳定的罪魁祸首——边沿台阶。阻抗匹配是指信号源或者传输线跟负载之间达到一种适合的搭配,阻抗匹配主要为了调整负载功率和抑制信号反射;然而,阻抗不匹配的现象在CAN总线网络中随处可见;如图1所示,阻抗不匹配的将造成7个现象,其中最受关注的为上升沿和下降沿的台阶;下文将针对边沿台阶的现象做详细介绍。图1  阻抗不匹配波形解释边沿台阶是怎么出现的,如何消除,对总线有何影响;一、边沿台阶的源头在CAN总线的网络布局中,手牵手直线型拓扑是最理想最常规的布局;但是在实际现场中,经常会出现分支的现象。这里重点提一下,在计算CAN总线
发表于 2019-04-19
CAN总线冷知识-边沿台阶是怎么来的?

STM32的CAN总线使用

本次调试使用的是珠海鼎芯科技(D-Chip)的STM32核心板。这块核心板上包含了一个CAN总线驱动器。可以很方便的同时与多个种工业设备连接通讯。STM32处理器的CAN总线有多种工作模式,本次测试的是正常模式。要在正常模式下使用首先需要初始化寄存器和使能相关的功能部件。第一步是初始化GPIO和时钟,STM32F103C的CAN总线GPIO是GPIOA_PIN_11和GPIOA_PIN_12。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能PORTA时钟                
发表于 2019-04-12

技术文章—CAN总线同步跳转宽度的作用

CAN总线一直以来以稳定、容错性高而著称。要想达到这样的效果,其独特的同步机制是非常重要的一点,本文将为大家讲解一下CAN总线的同步机制以及SJW 的作用所在。 CAN总线的同步共有两种方式:硬同步和重同步。 硬同步 在总线刚刚从空闲状态中走出来的时候,在帧头的位置都会进行一次同步。此时所有的节点位时间重新开始,就像所有的运动员都再一次回到了起跑线上。这种同步方式被称作硬同步。  重同步 硬同步时只是在有帧起始信号时起作用,无法确保后续一连串的位时序都是同步的,这个时候重同步就到了发挥作用的时候。具体来说,CAN总线的一个位时间中包含两个缓冲段BS1和BS2
发表于 2019-03-14
技术文章—CAN总线同步跳转宽度的作用

stm32 调试can总线丢帧的问题

问题出现的背景需要写一个新的电机的驱动,使用can通讯,驱动比较简单,很快就写好了。自己单独测试一个电机的时候没有问题,正反转测什么的都很正常。本以为事情会很顺利,但是在测两个电机的时候,却发现很严重的问题,经常左电机不装或者是右电机不转。问题的解决步骤方案一: 1. 遇到这种问题通常都是加上一个延时,觉得可能就是发的太快了,时许上可能有问题,但是我们的系统是一个实时的系统延时的时间不能太长。 2. 经过测试发现加延时可能较小出现这种问题的概率,但是不能解决这个问题,最终车子还是无法正常运行,没办法这个方案不行。分析: 既然加延时不行的话,只能去找为什么电机不装。使用can转usb将数据抓出来
发表于 2019-03-11
stm32 调试can总线丢帧的问题

STM32之CAN总线原理

;隐性电平对应逻辑0=总线电平为0V 显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。帧种类介绍:帧种类帧作用数据帧用于发送单元向接收单元传送数据的帧遥控帧用于接收单元向具有相同 ID 的发送单元请求数据的帧错误帧用于当检测出错误时向其它单元通知错误的帧过载帧用于接收单元通知其尚未做好接收准备的帧间隔帧用于将数据帧及遥控帧与前面的帧分离开来的帧注:其中,数据帧和遥控帧有标准格式和扩展格式两种格式。 标准格式有11
发表于 2019-03-07
STM32之CAN总线原理

STM32之CAN总线例程

;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);}/* CAN总线配置 */void CAN_config(void){ CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN
发表于 2019-03-07

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved