📄 notice
字号:
一些废话就在这里来唠叨了哈。
编译器用的是 AVR-GCC
这点代码的功能是:
1. 实现 ATMEGA128 读取 SJA1000 的寄存器内容。
2. 实现 ATMEGA128 写入 SJA1000 的寄存器内容。
3. 占据硬盘空间。
我的硬件平台接线信息是:
SJA1000: AD0-7 <-----------> ATMEGA128:PA0-7
SJA1000: ALE <-----------> ATMEGA128:PG2
SJA1000: /CS <-----------> ATMEGA128:PC2
SJA1000: /WR <-----------> ATMEGA128:PC0
SJA1000: /RD <-----------> ATMEGA128:PC1
SJA1000: MODE 5V 电源 (为了选 INTEL 总线操作模式)
SJA1000: /RSET 硬件复位电路。
其他的程序没有涉及到就不做说明。
需要注意的地方:
1. 参考 SJA1000 数据手册。
2. 读写前把 ATMEGA128 的外部端口设置为 SJA1000 数据手册
上进行读取之前的电位。这就是 sja1000_port_init() 所做的事情。
3. sja1000_port_init() 顺便把地址也给搞定了,这主要是应为,
读写函数都要用到这一步。
4. 由于 SJA1000 寄存器访问除了时序还有保持时间的要求。所以
如果你的SJA1000 的时钟频率比 cpu 慢的多,建议你把我注释了的
asm("nop"); 取消注释,更可以在多加几个。
不需要注意的地方:
1. 刚接触到 SJA1000 遇到寄存器不能访问的问题。在网上找了找。未果
然后参考网上的一些提示,自己写。现在可以正确访问了,希望能够给和
我一样刚接触 SJA1000 的同行们一点提示。
2. CAN 驱动刚刚开始,以后完了以后有空再发出来。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -