?? 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 + -