找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1438|回复: 3
打印 上一主题 下一主题
收起左侧

最近在自学CAN总线,有些关于SJA1000寄存器配置的问题,请高手指教

[复制链接]
跳转到指定楼层
楼主
网上流行的程序如下
#include  "stdio.h"
#include  "string.h"
#include  "intrins.h"
//#include "AT89X51.H"
#include "reg52.h"
//定义SJA1000的基址
#define SJA_BaseAdr  0X7F00
// 控制寄存器
#define         REG_MODE          SJA_BaseAdr+0x00       //内部控制寄存器
...
#define         REG_RXERR         SJA_BaseAdr+0x0E         //接收错误计数器
#define         REG_TXERR         SJA_BaseAdr+0x0F         //发送错误计数器
#define         REG_ACR1          SJA_BaseAdr+0x10       //验收代码寄存器
#define         REG_ACR2          SJA_BaseAdr+0x11       //验收代码寄存器
...
#define         REG_AMR3          SJA_BaseAdr+0x16       //验收屏蔽寄存器
#define         REG_AMR4          SJA_BaseAdr+0x17       //验收屏蔽寄存器
// 发送缓冲区寄存器
#define         REG_TXD_FID       SJA_BaseAdr+0x10         //发送缓冲区1
#define         REG_TXD_ID1       SJA_BaseAdr+0x11         //发送缓冲区2
#define         REG_TXD_ID2       SJA_BaseAdr+0x12         //发送缓冲区3
#define         REG_TXD_ID3       SJA_BaseAdr+0x13         //发送缓冲区4
#define         REG_TXD_ID4       SJA_BaseAdr+0x14         //发送缓冲区5
#define         REG_TXBuffer1     SJA_BaseAdr+0x15         //发送缓冲区6
...
#define         REG_TXBuffer8     SJA_BaseAdr+0x1C         //发送缓冲区13
// 接收缓冲区寄存器
#define         REG_RXD_FID       SJA_BaseAdr+0x10         //接收缓冲区1
#define         REG_RXD_ID1       SJA_BaseAdr+0x11         //接收缓冲区2
#define         REG_RXD_ID2       SJA_BaseAdr+0x12         //接收缓冲区3
#define         REG_RXD_ID3       SJA_BaseAdr+0x13         //接收缓冲区4
....
#define         REG_RXCOUNT       SJA_BaseAdr+0x1D         //RX报文计数器
#define         REG_RBSA          SJA_BaseAdr+0x1E         //接收缓冲区起始地址
#define         REG_CDR           SJA_BaseAdr+0x1F         //时钟分频寄存器

如上,
  SJA_BaseAdr+0x10  在上面设置中,即当验收代码寄存器,又当 接收缓冲区,还可以是发送缓冲区

这么设置不会冲突吗?
为啥可以这样设置?
我买的书里他是这么设置的,直接按照顺序一路下来
有点迷糊,是不是两个都可以?

51hei图片_20221111161341.png (242.03 KB, 下载次数: 61)

51hei图片_20221111161341.png

51hei图片_20221111161352.png (286.1 KB, 下载次数: 66)

51hei图片_20221111161352.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:195496 发表于 2022-11-12 08:22 | 只看该作者
收发是同一个地址,但是两个缓冲区,你读与写操作的是两个不同的缓冲区,这个跟串口通信的缓冲区是一样的,读与写是同一地址但是两个不同的缓冲区,一个你只能读,另一个你只能写
回复

使用道具 举报

板凳
ID:308903 发表于 2022-11-17 08:13 | 只看该作者
大漠落日 发表于 2022-11-12 08:22
收发是同一个地址,但是两个缓冲区,你读与写操作的是两个不同的缓冲区,这个跟串口通信的缓冲区是一样的, ...

学习了
回复

使用道具 举报

地板
ID:283207 发表于 2023-1-9 15:17 | 只看该作者
大漠落日 发表于 2022-11-12 08:22
收发是同一个地址,但是两个缓冲区,你读与写操作的是两个不同的缓冲区,这个跟串口通信的缓冲区是一样的, ...

学习了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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