查看: 2823|回复: 5

STC16 CAN总线测试和相关资料

[复制链接]

19

主题

81

帖子

637

积分

版主

Rank: 7Rank: 7Rank: 7

积分
637
发表于 2020-12-25 16:36:27 | 显示全部楼层 |阅读模式
本帖最后由 blue 于 2021-10-22 18:32 编辑

STC16F支持CAN总线通讯,支持CAN2.0标准,支持标准帧和扩展帧,好好搭搭已经做了图形化模块,可以快速的开发。

一、所需器材
  • 天问51-STC16F x2
  • CAN总线接口驱动(TJA1050)模块 x2
  • 公母杜邦线x8
  • 双绞线若干米,本次测试采用的是5米8芯网线,每4芯拧为一根,测试导线电阻为1欧。


二、硬件连接
1.示意图
Dingtalk_20201226092811.jpg

主板 P50(RX)--------RXD CAN模块
主板 P51(TX)--------TXD CAN模块

2.实物图
IMG_20201226_093719.jpg

4. 电源设置
CAN模块供电为5V,需要设置主板和下载器上的两个跳线帽到5V端


三、程序
1. 发送
采用标准帧发送,CAN数据最大为8字节,如果需要发送大于8字节的数据,需要采用协议分段发送。
Dingtalk_20201226094117.jpg
在线版例程:CAN发送

2.接收
接收到数据通过串口打印
Dingtalk_20201226094140.jpg
在线版例程:CAN接收

四、效果
Dingtalk_20201226095714.jpg

四、更多资料
有关CAN总线的介绍、协议、书籍等等详见附件

补充说明:
驱动默认没有使用硬件自动过滤ID,大部分场合需要自动过滤ID,减小CPU的负荷,可以自己修改驱动CANInit的这部分代码
单滤波设置如下:
  1. uint16 CanID = 0x3E3;
  2.         CANSetBaudrate();        //设置波特率
  3.         
  4.         CanWriteReg(ACR0,CanID>>3);                //总线验收代码寄存器
  5.         CanWriteReg(ACR1,CanID<<5);
  6.         CanWriteReg(ACR2,0x00);
  7.         CanWriteReg(ACR3,0x00);

  8.         CanWriteReg(AMR0,0x00);                //总线验收屏蔽寄存器
  9.         CanWriteReg(AMR1,0x1F);
  10.         CanWriteReg(AMR2,0xFF);
  11.         CanWriteReg(AMR3,0xFF);
  12.    
  13.         CanWriteReg(MR  ,0x01);     //单滤波设置
复制代码
双滤波设置如下:
  1. uint16 CanID1 = 0x111;
  2.         uint16 CanID2 = 0x222;
  3.         uint8 tempH = CanID2<<5;
  4.         uint8 templ = (CanID1&0x0007);
  5.        
  6.         CANSetBaudrate();        //设置波特率
  7.        
  8.         CanWriteReg(ACR0,CanID1>>3);                //总线验收代码寄存器
  9.         CanWriteReg(ACR1,0x00);
  10.         CanWriteReg(ACR2,CanID2>>3);
  11.          CanWriteReg(ACR3,tempH | templ);
  12.         //CanWriteReg(ACR3,0x42);
  13.         CanWriteReg(AMR0,0x00);                //总线验收屏蔽寄存器
  14.         CanWriteReg(AMR1,0xFF);
  15.         CanWriteReg(AMR2,0x00);
  16.         CanWriteReg(AMR3,0x18);
  17.    
  18.         CanWriteReg(MR  ,0x00);     //双滤波设置
复制代码



有关这几个寄存器的说明,可以看下芯片手册,不在过多解释







50-CAN总线收发测试.zip

87.9 KB, 阅读权限: 1, 下载次数: 107

54-CAN总线扩展帧收发测试.zip

99.37 KB, 阅读权限: 1, 下载次数: 110

STC16-CAN总线简单参考电路.pdf

68.25 KB, 阅读权限: 1, 下载次数: 139

《书把手教你学can总线》.pdf

13.13 MB, 阅读权限: 1, 下载次数: 322

回复

使用道具 举报

41

主题

167

帖子

3100

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3100
发表于 2021-1-23 21:59:25 | 显示全部楼层
本帖最后由 zly188 于 2021-1-23 22:01 编辑

STC16-CAN总线简单原理图修改过来,请和图形化一致。附件编译的案例也是错误的,请修改。
回复

使用道具 举报

19

主题

81

帖子

637

积分

版主

Rank: 7Rank: 7Rank: 7

积分
637
 楼主| 发表于 2021-2-26 11:10:07 | 显示全部楼层
回复

使用道具 举报

0

主题

1

帖子

12

积分

注册会员

Rank: 2

积分
12
发表于 2021-3-18 20:46:25 | 显示全部楼层
st16的can视频讲解什么时间可以看到
回复

使用道具 举报

0

主题

4

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2021-5-13 18:49:04 | 显示全部楼层
回复

使用道具 举报

0

主题

2

帖子

64

积分

注册会员

Rank: 2

积分
64
发表于 2021-8-19 17:41:58 | 显示全部楼层
王鲁鑫 发表于 2021-3-18 20:46
st16的can视频讲解什么时间可以看到

期待CAN的视频
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-4-20 03:23 , Processed in 0.322807 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表