专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
我的单片机型号是MC9S08DZ60,求助CAN通讯波特率计算
2019-03-26 08:00
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
NXP MCU
11677
7
1295
我的单片机型号是MC9S08DZ60,所使用的晶振频率是4MHZ,谁能给我一个计算CAN通讯波特率的范例吗?谢谢你们啦!!!
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
shuilongwang200
1楼-- · 2019-03-26 13:06
我的单片机型号是MC9S08DZ60,所使用的晶振频率是4MHZ,谁能给我一个CAN通讯的范例吗?谢谢你们啦!!!主要是波特率不知道怎么计算呀,求求大家帮帮我
加载中...
雪狼子
2楼-- · 2019-03-26 14:20
不是很清楚啊。。。。。。。。。
加载中...
shuilongwang200
3楼-- · 2019-03-26 14:44
什么地方不清楚呀?我就是想要一个MC9S08DZ60单片机的CAN通讯范例,谢谢你回应,谢谢
加载中...
xzz88
4楼-- · 2019-03-26 20:28
波特率啊,关键第一步是计算CAN的clock频率啊.看你是选择直接用外部晶振还是使用BusCLK(总线时钟,记得使用总线时钟时有个1/2的关系),然后再看你的CAN模块预分频数设置,这样就可以知道你最终提供给CAN发送接收模块的CANCLK了;比如是4MHZ,那么波特率就是1/4M = 250kbps
第二步,是将上面设置好的一个时钟位,进行划分为几份的事了,也就是Tseg1,Tseg2的设置,还有什么SJW位宽度; CANCLK一样,位时钟划分不同,2个CAN之间也不能正常通信~~~原则上可以有任意种划分法,但是有个啥子国际标准哦~周立功的CAN手册上有个针对SJT1000的设置,那是符合标准的.
有了上面两步CAN通信就没问题了.....
谨记:DZ60的外部时钟与总线时钟有个1/2的关系~
加载中...
quilt1120p
5楼-- · 2019-03-27 00:34
/******************************************************************************************
|MSCAN parameters:BaudRate |
|Tq = CanParam.BRP/fcanclock; |
|Tbit = (1+(1+CanParam.TSEG1)+(1+CanParam.TSEG2))*Tq; |
|1/(Tbit+CanParam.SJW*Tq) <= MSCAN_BaudRate <= 1/(Tbit-CanParam.SJW*Tq) |
|MSCAN_BaudRate: (3+CanParam.TSEG1+CanParam.TSEG2)*CanParam.BRP=Fcanclk/nMbps; |
| 80kbps |
*******************************************************************************************/
const Te_CanParam CanParam ={
sjw_4Tq, /*SJW*/
3, /*BRP*/
FALSE, /*SAMP*/
tseg1_10Tq, /*TSEG1 here the value is 9 */
tseg2_7Tq, /*TSEG2 here the value is 6 */
};
不知道这个例子你能不能看懂
加载中...
xyb629
6楼-- · 2019-03-27 01:27
精彩回答 2 元偷偷看……
加载中...
1
2
下一页
一周热门
更多
>
相关问题
相关文章
IMX6UL定时器按键消抖实验
0个评论
IMX6UL 裸机C语言IO 输入中断编程
0个评论
Cortex-A7 IO 输入中断系统分析
0个评论
IMX6UL裸机实现C语言按键输入实验
0个评论
IMX6UL裸机实现C语言蜂鸣器实验
0个评论
通过结构体的方式来定义和使用寄存器地址
0个评论
IMX6UL裸机实现C语言LED点亮与闪烁
0个评论
I.MX6U处理器LED灯点亮汇编程序之命令行方式编译与链接
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
第二步,是将上面设置好的一个时钟位,进行划分为几份的事了,也就是Tseg1,Tseg2的设置,还有什么SJW位宽度; CANCLK一样,位时钟划分不同,2个CAN之间也不能正常通信~~~原则上可以有任意种划分法,但是有个啥子国际标准哦~周立功的CAN手册上有个针对SJT1000的设置,那是符合标准的.
有了上面两步CAN通信就没问题了.....
谨记:DZ60的外部时钟与总线时钟有个1/2的关系~
|MSCAN parameters:BaudRate |
|Tq = CanParam.BRP/fcanclock; |
|Tbit = (1+(1+CanParam.TSEG1)+(1+CanParam.TSEG2))*Tq; |
|1/(Tbit+CanParam.SJW*Tq) <= MSCAN_BaudRate <= 1/(Tbit-CanParam.SJW*Tq) |
|MSCAN_BaudRate: (3+CanParam.TSEG1+CanParam.TSEG2)*CanParam.BRP=Fcanclk/nMbps; |
| 80kbps |
*******************************************************************************************/
const Te_CanParam CanParam ={
sjw_4Tq, /*SJW*/
3, /*BRP*/
FALSE, /*SAMP*/
tseg1_10Tq, /*TSEG1 here the value is 9 */
tseg2_7Tq, /*TSEG2 here the value is 6 */
};
不知道这个例子你能不能看懂
一周热门 更多>