SJA1000验收代码和验收屏蔽寄存器的配置

验收代码寄存器:can address 4

验收屏蔽寄存器:can address 5

 

≡表示恒等于,按位恒等,同或运算;v表示逻辑或

例如:id.10~id.3:0 1 0 1 0 1 0 1

            ac.7~ac.0: 0 0 0 1 0 0 0 0

则[(id.10 to id.3) ≡ (ac.7 to ac.0) ] = 1 0 1 1 1 0 1 0

设:am.7~am.0 : 1 1 1 1 1 1 1 1(不滤波,因为不管前面结果如何,第二个等式永远成立!)

当:am.7~am.0: 0 1 0 0 0 1 0 1   ,第二个等式成立!,此时,
接收id10~id3 为 0 x 0 1 0 x 0 x 而id2~id0 为xxx(任意) 的帧,并且
是在ac.7~ac.0定为: 0 0 0 1 0 0 0 0  的情况下!!!

总之,当: ac.7~ac.0: 0 0 0 1 0 0 0 0 , am.7~am.0: 0 1 0 0 0 1 0 1  时,接收id10~id3 为 0 x 0 1 0 x 0 x 而id2~id0 为xxx(任意) 的帧! 
我的结论:
1.
当am.7~am.0: 00000000, id10~id3 == ac.7~ac.0
2.
am.bx=1, id.bx=任意(0/1);
am.bx=0, id.bx==ac.bx

转自:http://forum.eepw.com.cn/thread/93906/1

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SJA1000是一种CAN控制器芯片,而FPGA是一种可编程逻辑芯片。要实现SJA1000和FPGA之间的通信,需要编写Verilog代码配置和控制SJA1000,并处理SJA1000发送和接收的CAN数据。 首先,需要在Verilog代码中定义SJA1000寄存器和引脚连接。通过配置这些寄存器,可以设置SJA1000以特定的通信速率、过滤规则和模式。这些寄存器的位字段与SJA1000寄存器文档中描述的位字段相对应。 接下来,需要实现一个CAN控制器模块,该模块负责与SJA1000进行通信,并执行CAN帧的发送和接收。该模块可以使用状态机来管理发送和接收过程,并使用FIFO缓冲区来存储发送和接收的CAN帧。 对于发送,Verilog代码应该读取要发送的CAN帧的数据和帧ID,并将这些信息写入SJA1000的发送寄存器中。然后,代码应该等待SJA1000将CAN帧发送出去,并通过检查SJA1000的状态寄存器来确认发送是否成功。 对于接收,Verilog代码应该周期性地读取SJA1000的接收寄存器,以检查是否有新的CAN帧到达。如果有CAN帧到达,代码应该读取CAN帧的数据和帧ID,并将其存储在FIFO缓冲区中,以供后续处理使用。 最后,可以添加其他必要的功能,如错误处理和中断处理。这些功能可以在Verilog代码中实现,以增强SJA1000和FPGA之间的通信能力。 以上是关于SJA1000和FPGA通信的大致描述,具体的Verilog代码实现需根据具体需求和SJA1000的规格书进行编写和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值