嵌入式面试(四)

1、CAN

简介

CAN 是 Controller Area Network 的缩写,是 ISO 国际标准化的串行通信协议

高速CAN的通信速率为125kbps~1Mbps,属于闭环总线,总线长度≤40m;低速CAN的通信速率为10~125kbps,属于开环总线,总线长度可达1000m。

【注】波特率是指单位时间内传送二进制数据的位数,单位用bps(位/秒)表示,记作波特。

           比特率是异步串行通信有效数据的传输速率,即单位时间内传送二进制有效数据的位数

CAN总线电平在高速CAN下,显性电平为逻辑0,此时CAN_H(3.5V)和CAN_L(1.5V)两根线上的电位差为2V,隐性电平为逻辑1,此时CAN_H(2.5V)和CAN_L(2.5V)两根线上的电位差为0V。

信号传输

(发送过程) CAN控制器将CPU传来的信号转换为逻辑电平, CAN控制器将CPU传来的信号转换为逻辑电平。

(接受过程)CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

<总线空闲>当总线上出现连续的11位隐性电平,那么总线就处于空闲状态。

<总线仲裁>当多个节点同时向总线发送消息时,总线对各个消息的标识符(即ID号)进行逐位仲裁 。如果某个节点发送的消息仲裁获胜,那么这个节点将获取总线的发送权,仲裁失败的节点则立即停止发送并转变为监听(接收)状态。

通信帧CAN总线笔记(2)-CAN通信的数据帧与遥控帧 - 知乎 (zhihu.com)

(数据帧)包括帧起始、仲裁段(ID)、控制段、数据段、CRC段、ACK段和帧结束

(遥控帧)包括帧起始、仲裁段(ID)、控制段、CRC段、ACK段和帧结束

[帧起始]SOF,恒为显性电平,即逻辑0,帧起始标志着CAN总线有电位差,开始有报文传输。

[仲裁段]用来判定一帧报文优先级的依据,仲裁段中的ID号是实现报文过滤机制的基础。

仲裁过程(ID):回读机制用来判定一帧报文优先级的依据,仲裁段中的ID号是实现报文过滤机制的基础)和线与机制在总线上显性位0能够覆盖隐性位1。)

发送请求位(RTR):在数据帧中,RTR位恒为显性位0,在遥控帧中,恒为隐性1。保证数据帧优先级高于遥控帧。

[控制段]包括标识符扩展位IDE,保证在前11位ID号相同的情况下,标准帧的优先级一定高于扩展帧;保留位r0和r1(扩展帧);四个字节的DLC,指示了数据段中的字节数,如果为遥控帧,表示该遥控帧对应的数据帧的数据段的字节数。

[数据段]包含8个字节的数据,从MSB(最高位)开始输出。

[CRC段]包含据多项式生成的CRC值,即CRC校验序列和CRC界定符。

[ACK段]包含ACK槽ACK界定符两个位。发送节点在ACK段发送两个隐性位,即发送方发出的报文中ACK槽为隐性1;接收节点在接收到正确的报文之后会在ACK槽发送显性位0,通知发送节点正常接收结束。

[帧结束]表示该帧报文的结束,由7个隐性位构成。

屏蔽滤波

为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式。

为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。

2、多线程实现TCP通信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值