当前位置:   article > 正文

NVidia Jetson Nano适配Seeed CAN FD驱动_jetson nano nvidia驱动

jetson nano nvidia驱动

未完待续。。。。

 

市面上(x宝上)便宜的CAN模块实在是太少了,好在有Seeed和Waveshare两家在做,控制芯片和收发芯片貌似都一样,开源的魅力。

最近Seeed把MCP2517升级到了MCP2518,而Waveshare则下架了,难道MCP2517有什么问题么。。。

硬件连接

将CAN FD module的pwr/spi/int的pin连接到Nano,由于Nano的40pin和Raspberry Pi的不是一一对应的,没法直接把module叠加上去了。但是杜邦线可以带我们飞(飞线)啊。

Seeed CANFD module 与Jetson Nano的连接

可以参考Seeed的Wiki(https://wiki.seeedstudio.com/2-Channel-CAN-BUS-FD-Shield-for-Raspberry-Pi/

驱动

魔改驱动

驱动可以从GitHub中下载(https://github.com/seeed-Studio/pi-hats)。

ko编译

make all

DTS

2xMCP2518FD-overlay.dts 是针对raspberry pi的,没有办法直接在Nano中使用,需要针对Nano的DTS做一些修改。

可以在板子上通过dtc将Nano的dtb转换成dts,加入CANFD的修改,再编译成dtb。

DTB --> DTS

//TODO: 忘记了,回头再补上

修改DTS

  1. clock {
  2. /* ... */
  3. mcp2517fd_osc: mcp2517fd_osc {
  4. compatible = "fixed-clock";
  5. #clock-cells = <0>;
  6. clock-frequency = <40000000>;
  7. clock-accuracy = <100>;
  8. };
  9. };
  10. /* ... */
  11. spi@7000d400 {
  12. /* ... */
  13. can0:can@0 {
  14. compatible = "microchip,mcp2517fd";
  15. reg = <0x0>;
  16. spi-max-frequency = <125000000>;
  17. interrupt-parent = <0x56>;
  18. interrupts = <0xC8 8>; /* IRQ_TYPE_LEVEL_LOW */
  19. clocks = <&mcp2517fd_osc>;
  20. controller-data {
  21. nvidia,cs-setup-clk-count = <0x1e>;
  22. nvidia,cs-hold-clk-count = <0x1e>;
  23. nvidia,rx-clk-tap-delay = <0x1f>;
  24. nvidia,tx-clk-tap-delay = <0x0>;
  25. };
  26. };
  27. /*
  28. spi@0 {
  29. compatible = "spidev";
  30. reg = <0x0>;
  31. spi-max-frequency = <0x1f78a40>;
  32. nvidia,enable-hw-based-cs;
  33. nvidia,rx-clk-tap-delay = <0x7>;
  34. };
  35. */
  36. };
  37. spi@7000d600 {
  38. /* ... */
  39. /*
  40. spi@0 {
  41. compatible = "spidev";
  42. reg = <0x0>;
  43. spi-max-frequency = <0x1f78a40>;
  44. nvidia,enable-hw-based-cs;
  45. nvidia,rx-clk-tap-delay = <0x6>;
  46. };
  47. */
  48. can1:can@0 {
  49. compatible = "microchip,mcp2517fd";
  50. reg = <0x0>;
  51. spi-max-frequency = <125000000>;
  52. interrupt-parent = <0x56>;
  53. interrupts = <0x26 8>; /* IRQ_TYPE_LEVEL_LOW */
  54. clocks = <&mcp2517fd_osc>;
  55. controller-data {
  56. nvidia,cs-setup-clk-count = <0x1e>;
  57. nvidia,cs-hold-clk-count = <0x1e>;
  58. nvidia,rx-clk-tap-delay = <0x1f>;
  59. nvidia,tx-clk-tap-delay = <0x0>;
  60. };
  61. };
  62. };

因为CANFD连接了Nano的SPI0和SPI1,所以将DTS中原来的SPI0/1的配置去掉了,分别配置can0和can1,另外,在clock中加入了MCP25xx的clock配置。

DTS --> DTB

dtc -I dts -O dtb -o tegra210-p3448-0000-p3449-0000-b00-mcp25xxfd.dtb tegra210-p3448-0000-p3449-0000-b00-mcp25xxfd.dts

配置启动项,使用新的DTB

//TODO: 忘记了,回头再补上

集成到BSP

以上在板子上的修改主要是为了调试,最后还需要将修改集成到BSP中。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/144399
推荐阅读
相关标签
  

闽ICP备14008679号