由於板子需要用到can 需要配置kernel支持can總線
配置kernel
make menuconfig
一、確認原理圖
can0-tx --- D18
can0-rx --- D17
二、確認寄存器
在am3359.pdf中
查看模式 這里tx rx都是mode2 配置pin的時候需要按照這個來配置
查看寄存器地址
這里查看 d_can0_tx對應的是978h d_can0_r x對應的是97Ch
三、修改設備樹
arch/arm/boot/dts/am33xx.dtsi 中 增加索引
因為在 arch/arm/boot/dts/am33xx.dtsi 中設置了起始地址為800h 所以這里需要設置為偏移地址 0x78h 0x7ch
如下 在 arch/arm/boot/dts/am335x-ariio-5702.dts中 pinmux內增加如下代碼
......
dcan0_pins_default: dcan0_pins_default {
pinctrl-single,pins = <
0x178 (PIN_OUTPUT | MUX_MODE2) /* D18 uart1_ctsn.d_can0_tx */
0x17c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* D17 uart1_rtsn.d_can0_rx */
>;
};
......
使能can0
在根節點外 ,和其他外設等同
&dcan0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&dcan0_pins_default>;
};
到這里,已經配置好了can 直接編譯即可
四、測試can
首先 ifconfig -a查看can信息 如果出現can 這表示驅動已經添加成功
測試can有專門的測試工具 可以使用ip命令配置can 需要移植 iproute2 否則用ip命令配置的時候會報錯
提示錯誤信息:
ip: either "dev" is duplicate, or "type" is garbage
需要移植自己的ip工具
參考:https://www.e-learn.cn/content/qita/812146 可以解決
這里有詳細的 iproute2 移植步驟
我使用canconfig命令來測試
參考 https://www.cnblogs.com/chenfulin5/p/7816220.html
能夠正常設置波特率 can驅動已經添加成功 如果can沒有接入 是不能測試收發的