linux can 怎么设置波特率

linux can 怎么设置波特率,第1张

CAN位时间特性寄存器 (CAN_BTR)

地址偏移量: 0x1C

复位值: 0x0123 0000

注: 当CAN处于初始化模式时,该寄存器只能由软件访问。

图2

位31SILM: 静默模式(用于调试)

0: 正常状态;

1: 静默模式。

位30LBKM: 环回模式(用于调试)

0: 禁止环回模式;

1: 允许环回模式。

位29:26保留位,硬件强制为0。

位25:24SJW[1:0]: 重新同步跳跃宽度

为了重新同步,该位域定义了CAN硬件在每位中可以延长或缩短多少个时间单元的上限。

tRJW = tCAN x (SJW[1:0] + 1)。

位23保留位,硬件强制为0。

位22:20TS2[2:0]: 时间段2

该位域定义了时间段2占用了多少个时间单元

tBS2 = tCAN x (TS2[2:0] + 1)。

位19:16TS1[3:0]: 时间段1

该位域定义了时间段1占用了多少个时间单元

tBS1 = tCAN x (TS1[3:0] + 1)

位15:10保留位,硬件强制其值为0。

位9:0BRP[9:0]: 波特率分频器

该位域定义了时间单元(tq)的时间长度

tq = (BRP[9:0]+1) x tPCLK

3 如何在代码中配置波特率

配置波特率是在CAN模块初始化时配置,代码示例如下:

//CAN1 register init

CAN_DeInit(CAN1)

CAN_StructInit(&CAN_InitStructure)

//CAN cell init

CAN_InitStructure.CAN_TTCM = DISABLE

CAN_InitStructure.CAN_ABOM = DISABLE

CAN_InitStructure.CAN_AWUM = DISABLE

CAN_InitStructure.CAN_NART = DISABLE

CAN_InitStructure.CAN_RFLM = DISABLE

CAN_InitStructure.CAN_TXFP = ENABLE

CAN_InitStructure.CAN_Mode = CAN_Mode_Normal

CAN_InitStructure.CAN_SJW = CAN_SJW_1tq

CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq//tBS1=6个tCAN时钟周期

CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq//tBS2=8个tCAN时钟周期

CAN_InitStructure.CAN_Prescaler = 4//ABP总线时钟时钟4分频

//CANbps= Fpclk/((BRP+1)*((Tseg1+1)+(Tseg2+1)+1)

//所以这里CANbps=30000000/4/(8+6+1))=500k bps

//总体配置方向: Tseg1>=Tseg2 Tseg2>=tqTseg2>=2TSJW

if (CAN_Init(CAN1,&CAN_InitStructure) == CANINITFAILED)

{

return _ERROR

}

CAN_ITConfig(CAN1,CAN_IT_FMP0, ENABLE)//打开FMP0中断

总体配置保持tBS1>=tBS2 tBS2>=1个CAN时钟周期 tBS2>=2tSJW

struct can_frame rx,tx

tx.can_id = 0x00000008

tx.can_dlc = 8

tx.data[0] = 0xA1

tx.data[1] = 0xF0

tx.data[2] = 0x00

tx.data[3] = 0x51

tx.data[4] = 0x02

tx.data[5] = 0x03

tx.data[6] = 0x04

tx.data[7] = tx.data[0] + tx.data[1] + tx.data[2] + tx.data[3] + tx.data[4] + tx.data[5] + tx.data[6]

int m = write(can_fd, &tx, sizeof(struct can_frame))

printf("can send...............%d\n",m)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7526699.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存