This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3359:ICEv2上的 CAN 配置

Guru**** 2905440 points

Other Parts Discussed in Thread: PROFIBUS, AM3359, ISO1050

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/662269/linux-am3359-can-configuration-on-icev2

器件型号:AM3359
Thread 中讨论的其他部件:ProfibusISO1050

工具/软件:Linux

您好!

我正在尝试在 AM3359 Ice V2上设置 CAN 总线 CAN0、但无法发送或写入消息。 我通过 Profibus / CAN 端口(J9)通过 PCAN-View 应用程序发送 CAN 消息、并尝试在电路板上反向读取该消息。
我没有连接 SPI1、UART0、I2C2或 PWM 器件(在器件树中)。 我的器件树如下(与 CAN0相关的器件):

am33xx_pinmux{(am33xx_pinmux)}

[...]

Dcan0_PINS_DEFAULT:Dcan0_PINS_DEFAULT{

pinctrl-single、pins =<

0x174 (PIN_INPUT | MUX_MODE2)/*(E16) uart0_TXD.Dcan0_Rx *

0x170 (PIN_OUTPUT | MUX_Mode2)/*(E15) uart0_RxD.Dcan0_TX */

>;

};

[...]

};

Dcan0{.dcan0}(&D)

状态="正常";

pinctrl-names ="default";

pinctrl-o =<&dcan0_PINS_DEFAULT>;

};

我将跳线放置在 J6以及 J8的引脚2和3上(但我也尝试在 J7上添加一个跳线、因为按照数据表、CAN 总线似乎使用了 gndprofi 信号)。

要设置 CAN0、我在目标上使用了以下命令:

IP 链路设置 CAN0类型 CAN 比特率50000三路采样打开       (在 pcan 视图上设置50 KHz)

IP 链路将 CAN0置位

然后、我使用以下命令进行写入和读取:

Cansend CAN0 5A1#11.22.33.44.55.66.77.88

CANDump CAN0

当我尝试读取来自 pcan-view 的信号时、我可以在电路板上 ISO1050 CAN 收发器的 Rx 引脚上看到该信号、但当我从 am3359写入消息时、我在 Tx 引脚上找不到它。

您对我的错误有什么想法吗?

此致

文森特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    是否在 J9的引脚9上提供外部 CAN 电压?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用适配器 USB 来实现与此非常相似的功能: www.peak-system.com/PCAN-USB.199.0.html

    当我测量 ISO1050的 GND2和 VCC2之间的电压时、电压为5V。 我具有类似的3.3V 和另一侧。 但是、即使适配器未连接、我也具有该电压。 通过测量适配器的引脚3 (CAN GND)和9 (VCAN)之间的电压、似乎没有电压。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    cansend 命令看起来与您发布它的方式不同。 您能否按此处所示进行尝试: processors.wiki.ti.com/.../Linux_Core_DCAN_User's_Guide
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我检查了数据表、结果表明我需要在适配器中焊接不同的引脚以获得5V 电压、否则没有电源。 5V 是与 CAN0协同工作的必备电压?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我使用以下命令时:Cansend CAN0 -I 0x10 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88

    我有答案:
    用法:cansend 。

    就像命令错误一样
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    能否运行 lsmod 命令并附加结果? 另外、请执行 ifconfig -a 并将结果附加到该结果。 您发布的捆绑内容以及器件树条目看起来都正确。

    此致、
    Schuyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    lsmod 的结果为: 
    ~# lsmod
    模块 pvrsrvkm 使用的大小
    403455 0
    PRU_rproc 10682 0
    pruss_intc 7249 1个 PRU_rproc
    桁架 9725 1 PRU_rproc
    SHA512_generic 9967 0
    SHA512_ARM 12252 0
    ti_am335x_adc 6864 0
    SHA256_generic 10178 0
    SHA1_generic 2864 0
    SHA1_ARM_NEON 6261 0
    SHA1_ARM 3862 1 SHA1_ARM_NEON
    MD5 2219 0
    DES_generic 17608 0
    CBC 2388 0
    g_multi 6145 0
    USB_f_mass 存储 36886 1 g_multiUSB_f_RNDIS
    15603 1 g_multi_u_ether
    12467 2 g_multi, USB_f_RNDIS
    libcomposite 44507 3 USB_f_mass 存储、g_multi,USB_f_RNDIS
    UDC_CORE 19466 4 USB_f_mass 存储、u_ether、USB_f_RNDIS、libcomposite
    USB_common 4737 2 UDC_CORE、libcomposite
    xfrm_user 22147 2
    个 xfrm4_tunnel 2040 0
    ipcomp 2257 0
    xfrm_ipcomp 4225 1 ipcomp
    支持4. 6363 0
    AH4 5627 0
    af_key 26992 0
    xfrm_algo 6970 5 xfrm_user、esp4、AH4、af_key、xfrm_ipcomp
    蓝牙 338029 2
    pm33xx 4348 0
    wkup_m3_IPC 8141 1 pm33xx
    wkup_m3_rproc 3670 1
    个远程处理器 28840 3 PRU_rproc、wkup_m3_rproc、wkup_m3_IPC
    OMAP-AES_DRIVER 19021 0
    OMAP-SHIM 21671 0
    ti_EMIF_SRAM 5406 1 pm33xx
    pruss_SoC_bus 3649 0
    crypto_engine 6466 1 OMA_AES_DRIVER
    c_CAN_PLAN 6638 0
    c_can 9578 1 c_CAN_platform
    CAN_dev 13125 1 c_CAN
    GPIO_pisosr 2972 0
    GPIO_pca953x 11032 4
    GPIO_tpic2810 2639 0
    ti_am335x_tscadc 5853 1 ti_AM335x_ADC
    RTC_OMAP 9341 1
    OMA_WDT 4719 0
    GPIO_DECODER 2387 0
    INPUT_polldev 4488 1 GPIO_DECODER
    sch_FQ_codel 9039 3
    uio_module_drv 7349 0
    uio 9158 1 uio_module_drv
    cryptodev 38385 1.
    
    
    

    和 ifconfig -a 的结果:

    ~# ifconfig -a
    CAN0 链接地址:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    正在运行 NOARP MTU:16 Metric:1
    RX 数据包:0错误:0丢弃:0超限:0帧:0
    TX 数据包:0错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:10
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    中断:162
    
    eth0 链接地址:以太网 HWaddr 68:C9:0B:E4:53:A1
    iNet addr:192.168.1.59 Bcast:192.168.1.255 Mask:255.255.255.0
    inet6 addr:fe80:6ac9:bff:fee4:53a1%763860/64范围:链接
    运行多播 MTU:1500公制:1的上广播
    RX 数据包:385错误:0丢弃:40超限:0帧:0
    TX 数据包:58错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:33273 (32.4 KiB) TX 字节:9286 (9.0 KiB)
    中断:173
    
    eth1 链接地址:以太网 HWaddr 68:C9:0B:E4:53:A3
    上广播多播 MTU:1500公制:1
    RX 数据包:0错误:0丢弃:0超限:0帧:0
    TX 数据包:0错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    
    低 链路环状图:本地环回
    iNet addr:127.0.0.1掩码:255.0.0.0
    inet6 addr:::1%763860/128范围:主机
    正在运行 MTU:65536公制:1的上环回
    RX 数据包:1606错误:0丢弃:0超限:0帧:0
    TX 数据包:1606错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1
    RX 字节:122128 (119.2KiB) TX 字节:122128 (119.2KiB)
    
    sit0 链接加密:IPv6-In IPv4
    NOARP MTU:1480公制:1.
    RX 数据包:0错误:0丢弃:0超限:0帧:0
    TX 数据包:0错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    接口和驱动程序看起来并不是完全设置的、这可能是由几个因素造成的。
    执行 cansend 调用之前、lsmod 命令是这样吗? 如果不能、请运行 cansend 调用、然后运行 lsmod、并附上结果。 此外、执行命令后、请运行以下命令:ip -d -s Linux show CAN0并附加该命令的结果。 我正在寻找链路的状态。

    此致、
    Schuyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回答。
    lsmod 命令是在 ip link set CAN0 up 命令之后完成的、但在 cansend 调用之前完成的。
    以下是我在 cansend for lsmod 后获得的结果:

    root@AM335x-EVM:~# ip link set CAN0 type can bitrate 50000 trial-sampling on
    root@AM335x-EVM:~# ip link set CAN0 up
    [ 195.814] c_CAN_platform 481cc000.can CAN0:Setting BTR=1c1d BRPE=0000
    root@AM335x-EVM:~ 0x55 0x68 0xc23 0x66 0x68 0xc66 0xc23 0x68 0xc13 0xCANEnd 0x27 0x66 0x66 0x27 0x66 0x27 0x66 0x66 0xC66 0xC66 0xC66 0xC66 0xC66 0x27 0x27 0x27 0x
    。
    root@AM335x-EVM:~ cansend CAN0 5A1#11.22.44.55.66.77.88
    [220.670455] CAN:控制器局域网内核(rev 20120528 ABI 9)
    [220.676851] NET:注册协议系列29
    [220.708626] CAN:原始协议(rev 20120528)[220.676851]
    基于
    root@moox# AM35x 模块:vm Ω~ moodlx
    CAN_RAW 使用的大小 6743 1
    CAN 29582 1 CAN_RAW
    pvrsrvkm 403455 0
    PRU_rproc 10682 0
    pruss_intc 7249 1个 PRU_rproc
    桁架 9725 1 PRU_rproc
    SHA512_generic 9967 0
    SHA512_ARM 12252 0
    SHA256_generic 10178 0
    SHA1_generic 2864 0
    SHA1_ARM_NEON 6261 0
    SHA1_ARM 3862 1 SHA1_ARM_NEON
    MD5 2219 0
    DES_generic 17608 0
    CBC 2388 0
    g_multi 6145 0
    USB_f_mass 存储 36886 1 g_multiUSB_f_RNDIS
    15603 1 g_multi_u_ether
    12467 2 g_multi, USB_f_RNDIS
    ti_AM335x_adc 6864 0
    libcomposite 44507 3 USB_f_mass 存储、g_multi,USB_f_RNDIS
    UDC_CORE 19466 4 USB_f_mass 存储、u_ether、USB_f_RNDIS、libcomposite
    USB_common 4737 2 UDC_CORE、libcomposite
    xfrm_user 22147 2
    个 xfrm4_tunnel 2040 0
    ipcomp 2257 0
    xfrm_ipcomp 4225 1 ipcomp
    支持4. 6363 0
    AH4 5627 0
    af_key 26992 0
    xfrm_algo 6970 5 xfrm_user、esp4、AH4、af_key、xfrm_ipcomp
    蓝牙 338029 2
    wkup_m3_rproc 3670 1
    pm33xx 4348 0
    wkup_m3_IPC 8141 1 pm33xx
    远程处理器 28840 3 PRU_rproc、wkup_m3_rproc、wkup_m3_IPC
    OMAP-AES_DRIVER 19021 0
    OMAP-SHIM 21671 0
    crypto_engine 6466 1 OMA_AES_DRIVER
    ti_EMIF_SRAM 5406 1 pm33xx
    pruss_SoC_bus 3649 0
    c_CAN_platform 6638 0
    c_can 9578 1 c_CAN_platform
    CAN_dev 13125 1 c_CAN
    GPIO_pisosr 2972 0
    GPIO_pca953x 11032 4
    GPIO_tpic2810 2639 0
    RTC_OMAP 9341 1
    OMA_WDT 4719 0
    ti_am335x_tscadc 5853 1 ti_AM335x_ADC
    GPIO_DECODER 2387 0
    INPUT_polldev 4488 1 GPIO_DECODER
    sch_FQ_codel 9039 4
    uio_module_drv 7349 0
    uio 9158 1 uio_module_drv
    cryptodev 38385 1.
    

    但是、当我尝试命令 ip -d -s linux show CAN0时、会显示:对象"linux"未知、请尝试"IP 帮助"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    抱歉、我的输入错误、Linux 应该是链接、这里是正确的示例"ip -d -s link show CAN0"。
    再说一次、当我键入它时、我不会赶上它、所以我很喜欢。

    此致、
    Schuyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没问题、以下是命令的结果:

    ROOT@AM335x-EVM:~μ
    
    
    ~ IP 链路设置 CAN0类型 CAN 比特率50000三次根采样@AM335x-EVM:~μ@IP 链路将 CAN0设置为 up [ 78.565868] c_CAN_platform 481cc000.can CAN0:设置 BTR=1c1d BRPE=0000 root AM335x-EVM:0x55 0x68 0xc22 0x68 0xc66 0x27 0xc66 0xc23 0xc66 0xc66 0xc23 0xc66 0xc23 0xc23 0xc66 0xc23 0xc23 0xc66 0xc23 0xc23 0xc23 0xc
    。
    root@AM335x-EVM:~ cansend CAN0 5A1#11.22.44.55.66.77.88
    [98.803162] CAN:控制器局域网内核(rev 20120528 ABI 9)
    [98.813437] NET:注册协议系列29
    [98.841368] CAN:原始协议(rev 20120528)
    root@~ AM335x-EVM 模块:33.3lsmod
    
    CAN_RAW 使用的大小 6743 1
    CAN 29582 1 CAN_RAW
    pvrsrvkm 403455 0
    PRU_rproc 10682 0
    pruss_intc 7249 1个 PRU_rproc
    桁架 9725 1 PRU_rproc
    ti_AM335x_adc 6864 0
    SHA512_generic 9967 0
    SHA512_ARM 12252 0
    SHA256_generic 10178 0
    SHA1_generic 2864 0
    SHA1_ARM_NEON 6261 0
    SHA1_ARM 3862 1 SHA1_ARM_NEON
    MD5 2219 0
    DES_generic 17608 0
    g_multi 6145 0
    CBC 2388 0
    USB_f_mass 存储 36886 1 g_multiUSB_f_RNDIS
    15603 1 g_multi_u_ether
    12467 2 g_multi, USB_f_RNDIS
    libcomposite 44507 3 USB_f_mass 存储、g_multi,USB_f_RNDIS
    UDC_CORE 19466 4 USB_f_mass 存储、u_ether、USB_f_RNDIS、libcomposite
    USB_common 4737 2 UDC_CORE、libcomposite
    xfrm_user 22147 2
    个 xfrm4_tunnel 2040 0
    ipcomp 2257 0
    xfrm_ipcomp 4225 1 ipcomp
    支持4. 6363 0
    AH4 5627 0
    af_key 26992 0
    xfrm_algo 6970 5 xfrm_user、esp4、AH4、af_key、xfrm_ipcomp
    蓝牙 338029 2
    wkup_m3_rproc 3670 1
    pm33xx 4348 0
    wkup_m3_IPC 8141 1 pm33xx
    OMAP-AES_DRIVER 19021 0
    远程处理器 28840 3 PRU_rproc、wkup_m3_rproc、wkup_m3_IPC
    crypto_engine 6466 1 OMAP_AES_DRIVER
    OMAP_SHIM 21671 0
    ti_EMIF_SRAM 5406 1 pm33xx
    pruss_SoC_bus 3649 0
    c_CAN_platform 6638 0
    c_can 9578 1 c_CAN_platform
    CAN_dev 13125 1 c_CAN
    GPIO_pisosr 2972 0
    GPIO_pca953x 11032 4
    GPIO_tpic2810 2639 0
    RTC_OMAP 9341 1
    OMA_WDT 4719 0
    ti_am335x_tscadc 5853 1 ti_AM335x_ADC
    GPIO_DECODER 2387 0
    INPUT_polldev 4488 1 GPIO_DECODER
    sch_FQ_codel 9039 4
    uio_module_drv 7349 0
    uio 9158 1 uio_module_drv
    cryptodev 38385 1
    root@AM335x-EVM:~# ip -d -s 链接显示 CAN0
    5:CAN0: MTU 16 qdisc FQ_codel 状态未知模式默认组默认组 qlen 10
    链接/ CAN 混杂0
    CAN 状态错误激活(错误计数器 TX 0 Rx 0)重新启动 ms 0
    比特率50000采样点0.875
    TQ 1250推进段6相段1 7相段2 SJW 1
    c_can:tseg1 2..16 tseg2 1..8 SJW 1..4 BRP 1.1024 BRP-inc 1.
    时钟24000000
    重新启动总线错误 arbit-lost error-warn error-pass bus-off
    0 0 0 0 0 0 numtxqueue 1 GSO_max_size 65536 GSO_max_segs 65535
    RX:字节数据包错误丢失溢出 mcast
    0 0 0 0 0 0
    TX:字节数据包错误丢失了载波整理
    0 0 0 0 0 0
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我目前无法访问 ICEv2板、但我的另一个板上装有 AM335x、试图查看 IP 链路显示的内容。 这些是您发布的结果与我拥有的结果之间的一些差异。 我想看看是否有方法可以检测出布线问题。 可能存在引脚多路复用问题、但我不确定。 但您的开机自检显示未检测到错误警告或错误通过或总线关闭情况。 我需要在这里尝试一个 ICEv2板、并希望下周早些时候告知您。
    此致、
    Schuyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我今天在您发布的 DTS 文件中注意到了这一点、如果 DTS 仍然与下面的行类似、请尝试将-o 更改为-0:

    pinctrl-o =<&dcan0_PINS_DEFAULT>;

    请查看使用 devmem2命令的引脚多路复用器寄存器并在此处发布结果吗?

    0x44E10970
    0x44E10974

    如果根据 DTS 引脚多路复用定义、这些未显示多路复用模式2、则可能是由于上述语法差异造成的。

    此致、
    Schuyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    另一个更新是、我在这里获取一个 ICEv2板、并尝试使用 CAN 接口。 我能够使它正常工作。 当我在之前的帖子中执行 devmem2命令时、我得到0x44E10970的值、得到0x0000000A、得到0x44E10974的值、得到0x00000022。 你得到的是这样吗?

    您能否将 Dcan0的引脚多路复用部分和 Dcan0节点连接到您当前使用的引脚多路复用器定义位置?

    此致、
    Schuyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回答。 我真的很抱歉、问题只是来自 o 而不是0。 现在一切都正常工作。
    再次感谢您!

    此致
    文森特