CAN通信三——正点原子资料(库函数)1版本1
来源:互联网 发布:java常用接口 编辑:程序博客网 时间:2024/06/05 15:06
本章,我们使用的是 450Kbps 的通信速率,使用的是 ISO11898 标准,
显性电平对应逻辑 0, CAN_H 和 CAN_L 之差为 2.5V 左右。而隐性电平对应逻辑 1, CAN_H 和 CAN_L 之差为 0V。在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在 CAN 总线的起止端都有一个 120Ω的终端电阻,来做阻抗匹配,以减少回波反射。
由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为 4 段。
同步段(SS)
传播时间段(PTS)
相位缓冲段 1(PBS1)
相位缓冲段 2(PBS2)
这些段又由可称为 Time Quantum(以下称为 Tq)的最小时间单位构成。
1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。
1 位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可以任意设定位时序。通过设定
位时序,多个单元可同时采样,也可任意设定采样点。
CAN的发送流程
(1)程序选择 1 个空置的邮箱(TME=1) 【1_空置:RQCP=X TXOK=X TME=1】
(2)设置标识符(ID)
(3)数据长度和发送数据
(4)设置 CAN_TIxR 的 TXRQ 位为 1,请求发送
(5)邮箱挂号(等待成为最高优先级)【2_挂号:RQCP=0 TXOK=0 TME=0】
(6)预定发送(等待总线空闲)【3_预定:RQCP=0 TXOK=0 TME=0】
(7)发送【4_发送:RQCP=0 TXOK=0 TME=0】
(8)邮箱空置。【5_发送成功后空置:RQCP=1 TXOK=1 TME=1】
OTHERS
(9) 不强制退出发送(ABRQ=1) 发送失败处理。
CAN接收到的有效报文,被存储在3级邮箱深度的FIFO中,FIFO完全由硬件来管理。
应用程序只能通过读取 FIFO
输出邮箱,来读取 FIFO 中最先收到的报文。这里的有效报文是指那些正确被接收的(直到 EOF
都没有错误)且通过了标识符过滤的报文。前面我们知道 CAN 的接收有 2 个 FIFO,我们每个
滤波器组都可以设置其关联的 FIFO,通过 CAN_FFA1R 的设置,可以将滤波器组关联到FIFO0/FIFO1。
- CAN通信三——正点原子资料(库函数)1版本1
- 正点原子标准例程-库函数版本——触摸按键扫描函数u8 TP_Scan(u8 tp)交流
- STM32正点原子MINI板——学习1实验平台简介
- 用GCC开发STM32,正点原子开发板的一个库函数版本例程示例
- 红外遥控波形解码1(基于正点原子战舰开发板)
- STM32F1战舰的II2C-正点原子的个人梳理(1)
- 正点原子的USMART调度组件学习(1)
- MPU6050简介(1)-基于正点原子的视频整理
- (正点原子例程)lwip以太网程序
- STM32——CAN通信升级版本(队列方式)
- 编码器学习第二记—STM32正点原子第14章学习
- (正点原子例程)wifi实验(7.16)
- stm32驱动液晶(ILI9320) 源自正点原子(笔记)
- (正点原子)wifi例程(7.20)
- 正点CSS 实例---表格1
- Java并发编程(三)——原子操作
- 手把手教你在STM32下移植UCGUI(基于正点原子的MINI开发板)
- 在stm32f4(正点原子“探索者”的板子)上,如何移植ds1302芯片程序
- Python 中文编码问题
- Jzoj4894 SJR的直线
- Linux中搭建ftp服务器
- map-reduce练习
- HTTP 断点续传(PHP实现)
- CAN通信三——正点原子资料(库函数)1版本1
- hdu 3461 Code Lock
- python自动化运维(IPy包)
- #Thinking in Java阅读笔记# 第八章 多态
- getchar 和putchar的注意事项
- 字符串反转的两种方式
- CSS三大特性
- Java读取Excel文件,生成SQL语句
- 2017-11-3周测试题