OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3220|回复: 1

分享一个STM8的CAN总线寄存器配置过程

[复制链接]

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2018-11-1 18:01:52 | 显示全部楼层 |阅读模式
本帖最后由 wangmingwei093 于 2018-11-1 18:06 编辑

如题,最近用到了CAN通信,但是由于不爱用库函数,一直觉着库函数有时候特别不方便,而且由于第一次用库函数,结果某个引脚一直不能输出高电平(应该自己的原因),果断放弃使用了,毕竟STM8的寄存器这么少。但是网上STM8CAN通信的寄存器我是真没找到,而且论坛里也有好多人问的,所以我就根据原子哥STM32的CAN通信寄存器配置,以及STM8的datasheet,写出一个例程来,用TJA1050收发器测试发送和接收都可以用,例程贴上CAN的代码,顺便稍微讲解一下。STM8 的CAN通信的寄存器设置和STM32寄存器设置区别还是挺大的。STM32的CAN所用的寄存器应该都有一个对应的地址(我没用过32的寄存器写,如有错误,请指正),而STM8的CAN寄存器就不是了,有一大段公用地址,这导致我开始的时候,没有注意,一直认为头文件中没有定义,直到参考了库函数的.h文件寄存器定义和datasheet后,才发现了这个问题,如图所示。

正是由于这个原因,在配置这些公共区域的时候,需要先配置一个页面寄存器,设置成你需要配置的寄存器页面。如图。页面选择寄存器。

例如,我要设置接收fifo,那么我就需要先把这个页面选择寄存器设置为0x07,再去设置接收fifo寄存器。

与STM32不大一样的再就是这个过滤器组了,STM8一共有6个过滤器组,每个过滤器组有8个8位寄存器,其实和STM32原理是一样的。如图。

其他的和STM32的设置基本雷同,只不过寄存器不大一样而已,发送和接收过程也是相似的,附上.c和.h文件,供大家参考,如有问题,可以一块交流。
CAN寄存器映射图.jpg
CAN寄存器映射图2.jpg
CAN原始头文件寄存器定义.jpg
页面选择寄存器.jpg
部分位宽和模式设置表.jpg
过滤器组位宽和模式设置.jpg

CAN.rar

2.56 KB, 下载次数: 83

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
 楼主| 发表于 2018-11-1 18:02:18 | 显示全部楼层
第一次发分享帖,不会排版
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 13:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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