手把手教你学CAN总线学习流水账-SJA1000+STC89C52(四)(2024年2月6日)

前言:手把手教你学CAN总线学习笔记算是CAN编程学习的流水账。

第三篇那个两节点的通信,刚开始从

1-CREAP 源程序   2-《手把手》 3-《从入门到实践》 三个版本,相互交叉比较,反而搞糊涂了

"心想:怎么两个节点通信的程序: 可以两个源程序,每个节点各一个,也可以有1个源程序,每个节点通用"

这几天放假,闲的时候又比较了下,有所得,记录如下:

1- 我原本思路是从 ”自收发“  转成    ”两点 通信“,自收发是已经调试通的(有点问题),稍微改了是可以做到转成”两点 通信“的。  

那么,修改的地方是哪里呢?

如果使用一个程序的话,就是这里

//发送数据函数里面,

把 

         SJA_CMR = SRR_BIT;//置位自发送接收请求   

改成
         SJA_CMR = TR_BIT;//置位发送接收请求

在SJA1000 初始化里


        //确保进入自接收模式
/*    do    
    {    
            SJA_MOD   = STM_BIT;
            ucRegister_StatusTemp  = SJA_MOD;
    }
    while( !(ucRegister_StatusTemp & STM_BIT) );
*/        
    

改成

//确保进入接收过滤模式
    do
    {
            SJA_MOD   = AFM_BIT;
            ucRegister_StatusTemp  = SJA_MOD;
     }
    while( ucRegister_StatusTemp & RM_BIT );

上述, SRR_BIT,TR_BIT,STM_BIT,AFM_BIT  设置 都在 这里有定义

2-还有个地方

ACR   验收代码寄存器  与   AMR   验收屏蔽寄存器    以及   TX_buffer【1】~TX_buffer【4】

一个简单的关系就是

【在扩展帧,单滤波的前提下】

AMR0~AMR3  都是0xff  ,及  无相关  设置后, 

ACR0~ACR3 的设置无需与TX_buffer【1】~TX_buffer【4】 一一对应,如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

属鼠的金牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值