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.

[参考译文] EK-TM4C129EXL:CAN 总线发送、Tx 不工作

Guru**** 670150 points
Other Parts Discussed in Thread: EK-TM4C129EXL, EK-TM4C1294XL, TPS2052, TPS2052B
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/634445/ek-tm4c129exl-can-bus-transmit-tx-is-not-working

器件型号:EK-TM4C129EXL
主题中讨论的其他器件: EK-TM4C1294XLTPS2052TPS2052B

大家好。 我对 CAN 总线协议和 TM4C 非常陌生。 我的任务是将 CAN 消息从1个 TM4C129EXL 传输到另一个 TM4C129EXL launchpad。 由于我不熟悉这一点,我需要从某个地方开始,因此我决定通过以下链接修改代码和硬件: http://ohm.ninja/tiva-c-series-can-bus-with-mcp2551/  ,并参考 C:\ti\TivaWare_C_Series-2.1.4.178\examples\peripheral\can 中的示例代码。

我已将 severel UARTprintf 添加到 void CANIntHandler (void)中、以帮助我进行调试。 我还使用了示波器来检查 CANH、CANL 和 TX、但没有输出(因此、在这篇文章中未连接示波器电容器)。 JP4和 JP5跳线采用默认配置、因为使用 CAN1代替 CAN0。 请提供帮助。

附件是我的主设备代码:

#include 
#include 
#include 

#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ca.h"
#include "inc/hw_ints.h"
#include "driverlib/ca.h"
#include "driverlib/interrupt.h"
#define "driverlib/driverlib.idio








#define "driverlib/voltex"#define "driveript.mdio.ide"#include "#define "#define "#define "driverlib/volatile.tex"#define "#define "driverlib/voltine.tine/volatile r.ip.mdio.mdio.ide"#define #include "#"#define "#"#"#define "#"#
//以 Hz

空延迟为单位的时钟速度(无符号 int 毫秒){
SysCtlDelay ((sysClock / 3)*(毫秒/ 1000.0f));
}

// CAN 中断处理程序
void CANIntHandler (void){

unsigned long status = CANIntStatus (CAN1_base、CAN_INT_STS_CAUST);//读取中断状态 UARTF("CANIntHandler (
status_status= CANINTn

)= CANIntStatus_CONTROLLE_INT_CANINTn);CANINTn = CANINTn (CANNOST_CONTROLLET = CANNOT_INT_CANNOT_CANINTn);// CANINTn = CANINT //读回错误位,对它们执行什么操作?
errFlag = 1;
UARTprintf ("triggered1\n");
}否则(status = 1){//消息对象1
CANIntClear (CAN1_base、1);//清除中断
errFlag = 0;//清除任何错误标志
UARTprintf ("tggered2\n");
}否则{"\n"uARTprintf







(")(n"n)、不会发生意外的错误;} // CAN 报文对象
unsigned int msgData;//报文数据长度为四个字节,我们可以将其分配为 int32
unsigned char * msgDataPtr =(unsigned char *)&msgData;//创建指向 msgData 的指针,以便我们可以访问单个字节

//从 PLL 以120MHz 运行。
sysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

//设置调试 UART
SysCtl_Periph_GPIOA;//配置 GPIO_PINT_0_0_GPIO0_GPIO_100;//配置 UART 外设




UARTStdioConfig (0、115200、sysClock);// 115200波特

//设置 CAN1
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);//启用 CAN1 GPIO 外设
GPIOPinConfigure (GPIO_PB0_CAN1RX);
GPIOCtlConfigure (GPIO_PB1_CAN1TX);//启用 GPIOPIN_PIN_0;
GPIO_PEPT1_GPIO_PIN_PIN_0
;GPIO_PEPT1_GPIO_PIN_PIN_0
CANInit (CAN1_base);
CANBitRateSet (CAN1_base、sysClock、500000);
CANIntRegister (CAN1_base、 CANIntHandler);//使用动态矢量表分配
CANIntEnable (CAN1_base、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
IntEnable (INT_CAN1);
CANEnable (CAN1_base);

//设置 msg 对象
msgData = 0;
CAN.u32msg MsgID = 1;.u32msgmsg

= 32u_i_msg = 0;i32u_msgmsg_msg = 32u_isg = 32u_msgmsg = 0;i_i_i_msg_msg = 32u_msg = 32u_it_msg = 32u_msg

MSG.pui8MsgData = msgDataPtr;

unsigned int t = 0;//循环计数
器浮点频率= 0.3;//频率缩放

器 while (1){

//设置下一个颜色(缩放 sinf (0-1)到0-255)
msgDataPtr[0]=(0.5 + 0.5*ff (t
pfr)+ 0xf (+0.5*f))*12*/f (+0.5*f)*/f (0xfr)=*/f (+0.5*/f)*/f (+0.5*f)*/f (+0.5*/f) // 120度相位差
msgDataPtr[2]=(0.5 + 0.5*sinf (t*freq +(4*PI/3)))* 0xFF;// 240度相位差
msgDataPtr[3]= 128;// 50%强度

UARTprintf ("发送颜色\tr:%d\TG:%d\Tb\gDataPtr:%1);msgDataSet[g1、CANMessage1
、CANq1、CANDataType &tbt (bt) //作为 msg 对象发送1

延迟(100);//如果

(errFlag)则等待100ms{//检查错误
UARTprintf ("CAN 总线错误\n");
}

t++;//溢出正常
}

返回0;
}

随附的是我的电路图:

连接的是终端的输出:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我不会发现您的代码有任何问题。 在 ISR 中调用 CANStatusGE()时,会遇到什么类型的错误? 错误类型可以提供一些线索。

    您在示波器的 CAN1_TXD 引脚上看到了什么?

    在原理图中、PB0和 PB1直接连接到收发器。 收发器为5V、而 MCU 为3.3V。 之间是否有电平转换器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    需要注意的两点:

    • 海报报告" CAN 总线不工作"-这种情况极不可能发生-这是海报的实施、即"不工作!"
    • 海报选择了一些(鲜为人知/经过测试)"忍者代码"。    供应商的"久经考验"和简化的"简单 CAN TX 和简单 CAN RX"是否会成为卓越的选择?

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

    你(们)好,查尔斯

    附件是直接探测到 CAN1_TXD (PB1)的 ISR 和示波器的 PICS。 关于电平转换器、我实际上是否从我在链接(ohm.ninja/.../)中看到的电平转换器中删除了电平转换器、作者没有使用任何电平转换器将 TM4C1294连接到收发器。 如何确认?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1_MOBILE、
    同意。 我已将标题编辑为"CAN 总线发送、Tx 不工作"。 我希望标题现在更重要。 我认为忍者代码只是 simple_tx.c 的轻微修改、作者使用 CAN1而不是 CAN0及其自定义消息。 我确实查看了 TI 的示例、并选择了实施忍者代码、因为 CAN1不要求我使用跳线、我仍然可以使用 UART0进行调试。 如果我错了,就纠正我:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为问题可能是您的总线收发器。 从 Microchip 数据表中、如果您将 Rs 保持断开状态、则收发器处于待机模式、不会传输。

    如果这解决了您的问题、请告诉我在 Microchip 的朋友他们欠我一个。

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

    正如 Charles 所说的、在3V 总线上使用5V IC 存在问题。 它的工作原理可能需要特别注意逻辑电平、尤其是当 IC 被设计为接受3V 电平或者它可能完全失败时。

    其次、布线连接容易出现问题、尤其是对于500kBaud。 最好避免使用试验电路板。

    第三,正如 CB1所指出的,它将有助于了解返回的状态是什么。 并非所有错误都是 IIRC (我没有方便的参考)、即使您在知道哪一个问题时遇到错误也是如此。

    第四、您没有提到是否有一个接收器在另一个 TM4C 上启动并运行、这是必需的。

    第五、CAN 的一个特性是、如果连接出现故障、发送器将在短时间后关闭。 您在启动后立即进入了范围。 如果您等待、您可能会错过活动迹象。

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

    调用 CANStatusGet 后、返回值的编码是什么? 您在终端上只显示"error"。 它应该是以下之一、或者您可能会遇到多个错误。 在开始传输之前、首先清除状态寄存器。 请注意其他人的评论。  

    #define CAN_STATUS_BUS_OFF 0x00000080
    
    //
    //! CAN 控制器错误级别已达到警告级别。
    //
    #define CAN_STATUS_EWARN 0x00000040
    
    //
    //! CAN 控制器错误级别已达到错误被动级别。
    //
    #define CAN_STATUS_EPASS 0x00000020
    
    //
    //! 自上次读取此状态后成功接收到消息。
    //
    #define CAN_STATUS_RXOK 0x00000010
    
    //
    //! 自上次读取此
    //! 状态。
    //
    #define CAN_STATUS_TXOK 0x00000008
    
    //
    //! 这是最后一个错误代码字段的掩码。
    //
    #define CAN_STATUS_LEC_MSK 0x00000007
    
    //
    //! 没有错误。
    //
    #define CAN_STATUS_LEC_NONE 0x00000000
    
    //
    //! 发生了位填充错误。
    //
    #define CAN_STATUS_LEC_Stuff 0x00000001
    
    //
    ! 出现格式错误。
    //
    #define CAN_STATUS_LEC_FORM 0x00000002
    
    //
    //! 发生确认错误。
    //
    #define CAN_STATUS_LEC_ACK 0x00000003
    
    //
    //! 总线保持位电平1的时间比允许的时间长。
    //
    #define CAN_STATUS_LEC_BIT1 0x00000004
    
    //
    //! 总线的位电平保持为0的时间长于允许的时间。
    //
    #define CAN_STATUS_LEC_BIT0 0x00000005
    
    //
    //! 发生 CRC 错误。
    //
    #define CAN_STATUS_LEC_CRC 0x00000006
    
    //
    //! 这是 CAN 最后一个错误代码(LEC)的掩码。
    //
    #define CAN_STATUS_LEC_MASK 0x00000007 

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

    [引用 user="Bob Crosby"]... 如果您将 Rs 保持断开状态、则收发器处于待机模式、不会传输。[/QUERT]

    请允许我注意、供应商的 Bob 通过"挖掘"这样的细节提供了很好的服务。   好的。

    但是-员工(认真)组合了 MCP2551数据-他们可以找到(默认)电压电平的"无/零"详细信息-对(未连接)引脚 Rs 印象深刻!   (斜率电阻器)

    相反、在我们的所有挖掘中、我们发现(并展示):

    红色突出显示部分显示、(可能)高电平"必须应用于引脚 Rs -以强制其进入待机模式!"   

    这并不是"确定的"、也不是"未连接的电压对列出的引脚 Rs 印象深刻-采用供应商的24封装规范。   我认为,如果引脚 Rs 被"拉高",那么这种语言(在上文1.4.3中)是多余的,那么"不需要"应用高级别"。

    此外、如果 Xcvr (实际上)"默认为待机"、则(许多)可能已被成功执行、并且海报报告(另一个)成功!

    我建议用户在引脚 Rs 和 GND 之间连接43K R -这样可确保具有合理信号转换的"有源 xcvr 模式"。

    单独注意- MCU 和 Xcvr 之间的 TXD 连接-“将起作用”-规范接受低至2V0的电压(因此与 TTL 兼容)为“逻辑高电平”。    RXD (xCVR 输出)可能会证明过高(接近5V)、因此应考虑使用3:5分压器。

    至于供应商代理的(外部)"朋友"-他们注意到他们的"皮肤"已经(几乎)通过了-他们的(多重)"绳索烧伤"(来自他们的强制缝隙)预计(某天)会治愈...  (可能)

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

    您好、Charles、

    当我今天尝试我的代码时、我没有收到任何错误(错误标志未被触发)。 但是、当我以 GND 为基准(未连接到收发器)直接探测 Tx (PB1)到示波器时、我无法在示波器上看到任何输出。 我的 JP4和 JP5跳线处于默认状态(针对 UART 进行配置)。 我的示波器设置是否正确(边沿触发、直流耦合)? 附件是代码和示波器电容器的屏幕截图。

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

    您好 CB1、

    感谢您并感谢"员工"深入了解 MCP2551数据表。 (如果我很高兴数据表中没有重要信息、那就很难找到重要信息了。)

    我从表1-1得出结论、其中指出、如果-IRS (来自 RS 引脚的电流)小于10uA、则 RS 上的电压将大于0.75Vdd。 如果 RS 上没有电阻器、则流出引脚的电流应为零。 然后从表1-2中可以看出、如果 VRS > 0.75Vdd、则无论 TXD 引脚的状态如何、CAN 总线都将处于隐性状态。 这是原始海报所看到的问题。

    最后一点、我再次完全同意您的意见。 原始海报应尝试在 RS 引脚上添加一个下拉电阻器。

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

    尊敬的 Bob:

    一如既往-很高兴收到您的"合理"回答。    

    虽然您的写作是合乎逻辑的-但它不能满足数据表的"高度特定"要求、即"对 Rs 引脚应用"高电平"!

    此外(如上所述)、让此 CAN 设备"默认为待机"(这将(可预测)妨碍大多数用户)不会证明"不明智"?

    最后一个"迎风"-我们的海报报告了"忍者"的"成功"-他(模仿)(即复制)避免使用任何与(魔鬼)引脚 Rs 的连接!   (如海报原理图所示)

    总之-使用(建议)~43K 下拉 R -和"拨号降低 CAN 数据速率"(至少暂时)应该(很快)参阅我们的海报"空中下载!"  (CAN -空气要清零)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bob 和 CB1、您好、尽管错误标志不再被触发(我之前曾遇到的错误)、但 Launchpad 的 Tx 引脚似乎没有输出。 从示波器电容器可以看到、输出在5V 时保持高电平、似乎不发送任何信号。 (此时我没有尝试过任何收发器)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    似乎您将 errFlag 初始化为0、以某种方式不进入 ISR、因此您认为没有错误。 如果输入 ISR、则您应该已经打印出触发和触发2。 您是否断开了 MCU 与收发器的连接? CAN 模块需要监控 RX 引脚、以便对总线进行仲裁。 如前所述、您需要在 RX 引脚上具有电平转换器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Gowtham"]从示波器电容器中,输出保持高电平为5V [/引用]

    3V 器件的输出为5V 会带来麻烦。

    Robert

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

    的确-然而、员工对 XCVR 规范的"深入探讨"揭示了 XCVR 的 TX 引脚给我们留下了深刻的印象(~75K 上拉)!

    这似乎表明海报的连接(MCU TX 到 CAN TX)"不存在和/或有故障"、或者 MCU 未正确配置到 CAN 模式...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    75k 上拉电阻可能会实现这一目的。 不确定 TM4C 的输出驱动器将如何对其5V 容差做出反应。

    即使没有收发器、OP 也应该看到转换、但前提是程序启动前连接了示波器、并且没有明显的后触发延迟。

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

    请记住、"简单 RX/TX"的使用已被"拒绝"(因为必须在 SW 中"更改 CAN 端口")、而改用(肯定)经过充分测试的"ninja 代码"、因此即使(所有)的设置/配置也证明是可疑的!

    使用已知合格、供应商提供的计划(越简单越好)始终证明是最好的...   (即使必须更改"利益/焦点港"、尤其是必须更改该港!)

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

    e2e.ti.com/.../mysimple_5F00_tx.cHiCB1、

    自从您崇拜"供应商提供的计划"以来、您已说服我尝试"简单的 TX"。 因此、我对原始"简单 TX"代码进行了一些更改、以适应 EK-TM4C129EXL、并在配置 CAN 跳线时使用 UART2 ICDI 虚拟 UART。 因此、我有几个问题:

    1) 1) UART2的 INIT 函数是否正确? 如果是、我是否仍然可以在 UART2的 launchpad 上使用 USB 调试、或者必须使用连接到 PA6和 PA7的 USB 转 UART 电缆?

    2) 2) CAN 总线能否以120 MHz 的频率从 PLL 运行时钟?

    我的修改后的简单 TX。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为没关系、除了您需要将120MHz 指定为 UARTSDioConfig 的源时钟、而不是16MHz。 CAN 模块可以将120MHz 作为源时钟。 API 将获取源时钟并生成相应的位时序。 您需要 UART2的 USB 转 UART 转换器。

    我还建议您添加以下两行、将 CAN 置于环回模式、以确保在连接到收发器之前代码正常工作、以便您可以更好地隔离问题是否与代码设置有关。 驱动程序库没有用于进入环回模式的 API。 您需要手动执行此操作。

    HWREG (CAN1_BASE_CAN_O_CTL)|= CAN_CTL_TEST;
    HWREG (CAN1_BASE_CAN_O_TST)|= CAN_TST_LBACK;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、如果您使用 PIOSC (16MHz)作为 UART2的时钟源、16MHz 就可以了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Gowtham"]自从您崇拜"供应商提供的计划"以来,您已说服我尝试"简单的 TX"

    所以... 好极了!  (你的说服力)  虽然我的“崇拜 是著名的、如此有效的指导技巧,亲吻”。  (突出显示、彩色、粗体-因此"无样"供应商-不会错过!)

    回想一下、成千上万的人在这里采用了"simple_RX/TX"、这一切都取得了巨大成功!  (包括 Moi)  这不能说是"忍者"。

    KISS 主张"简单"-这最好由众所周知的人提供-并得到许多人的证实!   系统、可测量、小/集中的代码块-"一次一个"使用-很好地代表 kiss。。

    请注意、KISS 在全球范围内的代表性很强(供应商不可知)、并且在最复杂的字段中使用(也许(您现在的词)"已被标出")。  

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

    e2e.ti.com/.../can1_5F00_try1.cHI所有、

    1) 1)在等待 UART 转 USB 转换器时、我决定使用 CAN1和 UART0尝试供应商提供的程序。 在我看来,程序没有调用 CANIntHandler(),并且在“UARTprintf (“Sending msg:0x%02x %02x %02x %02x %02x”,)”语句之后没有继续。 输出如下所示。 从示波器可以看到、Tx 现在为5V、但没有发射信号。  (测试方法是将 Tx 引脚直接连接到示波器)。

    2) 2)我无法编译程序以尝试使用"HWREG (CAN1_BASE_CAN_O_CTL)|= CAN_CTL_TEST;"和"HWREG (CAN1_BASE_CAN_O_TST)|= CAN_TST_LBACK;"进行环回。 错误消息如下所示:  

    1)

    2)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这有点奇怪。 可以对任何寄存器执行 HWREG 写入吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查尔斯

    如果我们"引导海报"到"环回"-我们是否应该"提供(部分)有关"如何"环回部署的说明?"

    具体而言-做海报:

    • 在 MCU 和 CAN Xcvr 之间保持其 TX 和 RX 连接?
    • 您不应该描述要部署什么(可能) MCU 连接?   (他是否将 TX 从一个 UART 连接到同一 MCU 上第二个(不同) UART 的 RX?)

    我已经关注过(很多)这样的 CAN 回送发布-应该是内存服务的-大多数... 未证明非常成功!   (许多-完全不...)

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

    您好 CB1、

     我的环回模式目的是确保 CAN 模块的配置正确。 在回送模式下、海报可以检查是否进入 ISR 以及是否发送了消息。 无需将 MCU 连接到收发器。 事实上、在回送模式下、CAN 模块将忽略 RX 引脚。 TX 在内部连接到 RX、但内核将忽略 ACK 位、因为总线上没有节点来驱动 ACK。 他可以在回送模式下使 TX 和 RX 引脚保持断开状态。 回送模式运行后、至少我们知道它已按预期编程工作、然后他可以禁用回送并专注于 MCU 和收发器之间以及收发器与总线之间的连接。 我建议海报打开注册窗口、并在遇到错误时监控 CANSTS (CAN 状态)寄存器。 当 TX 尝试驱动总线上的显性位时、RX 很可能保持隐性状态。 发生这种情况时、它将是位0错误、最终会超过错误计数器阈值、并将强制 CAN 控制器进入脱离总线状态。  

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

    作为一种"更基本的事实调查方法"、我建议海报将他选择的 UART_TX (而不是)重新配置为 GPIO (推挽)输出、然后编写代码以5-10 Hz 的频率进行切换。   

    这应立即揭示:

    • UART_TX (MCU 引脚)和 XCVR TX 之间连接完整性的可能性。
    • 这样的切换已经"唤醒 Xcvr"并且"显性与隐性"差分输出应该会在 CAN 总线 H 和 L 上显示出来

    已(仅)假定已实现连接完整性。   (禁止在这里(kiss))随时准备/能够检测并拒绝或确认此类结果。   (您可能会注意到、Robert 和我自己都注意到5V 输出-"声称"位于" Xcvr TX 和 MCU TX 之间的互连"上。   相反-除非这是"非标准或 USB 引脚"之一、否则有合理的预期- ESD 二极管会将该5V 电压钳制到超过(高于) 3V3的二极管压降?   如果不存在海报的电容器显示的"钳位"、则该 UART_TX 引脚可能存在"连接错误"或"损坏"、而"全在这里"则会继续"无休止地追逐我们的尾部"。   (虽然有趣、但事实证明它不是非常有效...)

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

    今天的故事:

    1) 1) while 循环似乎正常工作。 但是、CANIntHandler 不会被触发、并且发送的报文计数(总数)保持为0。 无线 已附加屏幕快照和代码。

    2)尊敬的 CB1、您能否为"将所选 UART_TX (而不是)重新配置为 GPIO (推挽)输出"提供示例或参考、然后编写代码以在5-10 Hz 的频率下进行切换。  '

    同样、在程序启动后、不使用任何收发器直接探测 TX 到示波器的情况下也会尝试此操作。

    e2e.ti.com/.../8132.can1_5F00_try1.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感受您的疼痛-但(如此多)是由"不遵循亲吻指南"引起(并添加)的!

    导致 GPIO "切换"是 MCU 操作中最基本的操作之一-如果您"尚未"达到该点-您将转至执行 CAN 的"难度更大"尝试、从而极大地违反了"kiss"。

    这是相当"正常的"----在开始张贴海报时,在没有深刻理解的情况下,导入"网码"----因此(可预测的)他们的努力失败了。

    您是否会"太快"移动-目标是"太先进?" 这些都不是负面的、而是我试图让您"遵守 kiss 标准"、多年来的经验(和创办、然后将过去的技术公司公开)证明是(迄今为止)一个更优秀的"攻击方法!"

    您对 MCU 手册(GPIO 部分)的阅读(以及"外设驱动程序用户指南")以及您(扩展)使用论坛搜索框(在本论坛页面顶部)的关键字"GPIO set-up/config"全部为"kiss 规定"(我认为最有必要)、以便您能够更好地理解并获得成功...

    我很少看到"快捷方式"的工作、而且他们从未证明"持久"。 "推出 CAN"(最早的时候- IMO)的决定会对您的知识库造成过多的负担(此时很早)。 而是从建议的"GPIO 掌握程度"开始-通过您的实验获得(减去任何 CAN)是您取得(甚至 CAN)成功的最佳途径...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     您可以使用 TivaWare 中的闪烁示例程序作为参考。 修改它以切换 PB1引脚。

     您的程序没有跳转到 CANIntHandler 的原因可能是您没有取消注释下面显示的 CANIntRegister(),除非您在 startup_ccs.c 中静态指定了矢量 尝试取消注释该行、然后再次运行。 顺便说一句、我想您将尝试使用 CAN0的 TivaWare 示例、但您似乎再次使用不同的时钟速度为 CAN1修改它。  

    //
    //在 CAN 外设上启用中断。 此示例使用静态
    //分配中断处理程序,表示处理程序的名称
    //位于启动代码的矢量表中。 如果您想使用动态的
    //分配矢量表,然后还必须调用 CANIntRegister()
    //此处。
    //
    // CANIntRegister (CAN1_base、CANIntHandler);// if using dynamic vectors
    //
    CANIntEnable (CAN1_base、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS); 

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

    查尔斯

    如果您注意到海报(目前)不知道"如何切换 GPIO "、则存在"供应商愤怒"(即进一步愤怒)的风险。   因此、(进一步)鼓励"朝着 CAN 前进"(显然)在海报上有如此多的"必要学习"时(真的)明智吗?

    该论坛(仅限)是参加海报"、"渴望成功"、并通过(远)真实要求"纪律学习和理解"?

    今天的(小火)可能会被加倍(通过勺子供料、切/膏)、但又大得多(可预测)"不能"-肯定会"在拐角处?"

    这里有一个相当明确的"供应商拒绝 Kiss "的观点(不可否认)-这真的是最好的吗?    MCU 销量最大的原因是否是"忽略流程?"

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

    [引用 user="Gowtham"]由于使用 CAN1而不是 CAN0,因此 JP4和 JP5跳线处于默认配置状态

    您好、Gowtham、

    JP4/5在 Launch Pad 原理图中反向放置相对 目标 MCU PD4、PD5 在 BP2-X6引脚9、11上可用。  因此  ,JP4/5的 PD4/5 位于 X11插头 引脚40、X11-引 脚38上,您的图片显示 了引脚58和引脚60上的 CAN 跳线。 目标 MCU 的 UART0通过 JP4/5连接到 ICDI UART0、 可以在 JP4/5接头之间侧向旋转 UART0跳线以选择 MCU PA0、PA1用于 CAN0 OUT 至 BP2-X6引脚9、11。

    X11引脚60 =目标 VBUS/1.6B

    X11引脚58 = PB0

    X11引脚? = PB1似乎不存在....

    同样 、您必须执行替代的数字选择 GPIO 配置 、其中 UART0=CAN0... 我在您的代码中看不到这一点...

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

    如代码示例中所示、在开机自检 PA0、PA1 = CAN0而非 CAN1后进行编辑。

    1. 您是否发现 在 Launch Pad 上无法访问 CAN1-TXD1?  

    2. 用于 终止   CAN 串行总线上所有器件的文本源状态?

    注: JP4、5向侧面转动[1-3]、[2-4]; 可以 通过 ICDI 为 printf ()调用配置 UART2。

    当 大鱼挂着的时候,他们笑着,这是一场激烈的战斗, 最后是在语义上的疯狂的摇盘中。

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

    您好 BP101:

     CAN1_TX 可在 X11-60上访问。 我刚刚创建了一个从 TX (X11-60)到 RX (X11-58)的环回。 我运行的是仅对数据进行修改的 OP 程序。 为了避免位填充、我将所有数据更改为0x55、以便于查看。 由于它是一个回路、CAN 发送器将由于没有来自任何接收器的 ACK 而失败。  

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

    [引用用户="BP101"]当 大鱼钩起来时,骆驼微笑会引起激烈的对抗, 最终以语义为中心。

    不提供 Charles 的最新帖子(带有 XTAL Clear Scope CAP)、证明在 BP 建议的"修复"中、"语义"远不是单独的(错误)。   

    更"激烈的战斗"似乎是 CAN1-TXD1存在或缺乏这种战斗。   只有 BP Charles 才能正确。   (高堆 CB1芯片与"Charles"放在一起。)

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

    您好 BP101:  

    感谢您的评论、我将尝试使用 TX (X11-60)到 RX (X11-58)的回送配置。  

    您好、Charles、

    我想用我的 Launchpad 复制这项工作,并检查我 的 TX (X11-60)是否确实在工作。 您是否愿意为我提供您的代码? (如前所述、我尝试使用  "HWREG (CAN1_BASE_CAN_O_CTL)|= CAN_CTL_TEST;"和"HWREG (CAN1_BASE_CAN_O_TST)|= CAN_TST_LBACK;"进行环回、但无法成功。  

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

    您好、Gowtham、

     我使用了您的程序。 我唯一改变的是 msgData、在这里我强制数据为0x55。 您完全没有更改。 我更改的唯一原因是为了避免位填充。 您只需在 X11-60和 X11-58之间创建外部回送并在示波器上探测 X11-60,您就可以看到我看到的内容。 前面我建议使用内部回路、这是 CAN 模块诊断测试的一部分。  

    如果您看一下我显示的示波器 CAP、则在 ACK 失败之前是正确的。 消息 ID 为1。 由于它是"1"、因此协议必须在每5个连续相同的状态后进行位填充。 标识符字段为11位。 然后、您会看到 RTR/IDE/R0位等于0、后跟 DLC、后者是4 (4字节数据后跟)。 在数据字段中、您可以看到4个字节的0x55后跟 CRC。 ACK 字段是隐性的、这是预期的、因为我处于环回模式。 ACK 通常由接收器应答显性状态。 我在这里没有使用过收发器。

    #include 
    #include 
    #include 
    
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "inc/hw_ca.h"
    #include "inc/hw_ints.h"
    #include "driverlib/ca.h"
    #include "driverlib/interrupt.h"
    #define "driverlib/driverlib.ide"#define "driverlib/voltines.h"#include "drivers/volatile
    
    
    transles/secnature/delay
    
    
    
    #define #define #define #define #driveriptine/unsignatile transmission #ine/unsignatile trles.mdio.h #define #include "#define #define "ine/driverlib/ines.ine.tine/driverf_sym.ipt.ide"#define #define #define "#
    
    
    
    
    
    SysCtlDelay ((sysClock / 3)*(毫秒/ 1000.0f));
    }
    
    // CAN 中断处理
    程序 void CANIntHandler (void){
    
    无符号长整型状态= CANIntStatus (CAN1_base、CAN_INT_STS_CAUST);//读取中断状态
    UARTprintf ("trigged\n");
    if (status =CAN_INT_INTID_STATUS){//控制器状态中断
    状态= CANStatusGet (CAN1_base、CAN_STS_CONTROL);//读回错误位,对它们执行什么操作?
    错误标志= 1;
    UARTprintf ("Triggered1\n");
    } 否则、如果(status = 1){//消息对象1
    CANIntClear (CAN1_base、1);//清除中断
    错误标志= 0;//清除任何错误标志
    UARTprintf ("Triggered2\n");
    } 否则{//永远不会发生
    UARTprintf ("意外的 CAN 总线中断\n");
    UARTprintf ("错误为--%lu\n",status);
    }
    }
    
    int main (void){
    
    tCANMsgObject msg;// CAN 报文对象
    unsigned int msgData;//消息数据长度为四个字节,我们可以将其分配为 int32
    unsigned char * msgDataPtr =(unsigned char *)&msgData;//创建指向 msgData 的指针,以便我们可以访问各个字节
    
    //从 PLL 以120MHz 运行。
    SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
    
    //设置调试 UART
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);//启用 UART0 GPIO 外设
    SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
    GPIOPinConfigure (GPIO_PA0_U0RX);
    GPIOPinConfigure (GPIO_PA1_U0TX);
    GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
    UARTStdioConfig (0、115200、sysClock);// 115200波特
    
    //设置 CAN1
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);//启用 CAN1 GPIO 外设
    GPIOPinConfigure (GPIO_PB0_CAN1RX);
    GPIOPinConfigure (GPIO_PB1_CAN1TX);
    GPIOPinTypeCAN (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
    SysCtlPeripheralEnable (SYSCTL_Periph_CAN1);
    CANInit (CAN1_base);
    CANBitRateSet (CAN1_base、sysClock、50000);
    CANIntRegister (CAN1_base、CANIntHandler);//使用动态矢量表分配
    CANIntEnable (CAN1_base、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
    IntEnable (INT_CAN1);
    CANEnable (CAN1_base);
    
    //设置 msg 对象
    msgData = 0;
    MSG.ui32MsgID = 1;
    MSG.ui32MsgIDMask = 0;
    MSG.ui32Flags = MSG_OBJ_TX_INT_ENABLE;
    MSG.ui32MsgLen = sizeof (msgDataPtr);
    MSG.pui8MsgData = msgDataPtr;
    
    unsigned int t = 0;//循环计数器
    // float freq = 0.3;//频率缩放器
    
    while (1){
    
    //设置下一个颜色(缩放正弦(0-1)到0-255)
    // msgDataPtr[0]=(0.5 + 0.5*sinf (t*freq))* 0xFF;
    // msgDataPtr[1]=(0.5 + 0.5*sinf (t*freq +(2*PI/3)))* 0xFF;// 120度相位差
    // msgDataPtr[2]=(0.5 + 0.5*sinf (t*freq +(4*PI/3)))* 0xFF;// 240度异相
    // msgDataPtr [3]= 128;//强度为50%
    msgDataPtr [0]= 0x55;
    msgDataPtr [1]= 0x55;
    msgDataPtr [2]= 0x55;
    msgDataPtr [3]= 0x55;
    
    
    UARTprintf ("发送颜色\tr:%d\TG:%d\TB:%d\n"、msgDataPtR[0]、msgDataPtR[1]、msgDataPtR[2]);//将颜色写入 UART 以进行调试
    CANMessageSet (CAN1_base、1、&msg、MSG_OBJ_TYPE_TX);//作为 msg 对象1发送
    
    延迟(100);//等待100ms
    
    if (errFlag){//检查错误
    UARTprintf ("CAN 总线错误"n);
    }
    
    T++;//溢出正常
    }
    
    返回0;
    } 

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

    [引用用户="Charles Tsaaa"] CAN1_TX 可在 X11-60访问

    根据 LaunchPad 原理图 EK-TM4C1294XL、 X11-60 (硬)连接到 USB-VBUS、并被识别为这样。 Gowtham 的 Launch Pad 外观相同 EK-TM4C1294XL、 不确定帖子标题中包含什么129EXL。  现在必须想知道 这是否是 相同的 X11头、 如果不是、为什么 会有如此不同 、因为这 不能在 同一系列的 Launch Pad 中保持一致的设计主体。

    @Gowtham 原理图(JP4/5)中的控制区域网络 在 PA0、PA1上使用 MCU CAN0、似乎 EXL 可能具有我不知道的不同 X11接头引脚。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    也许海报发布垫不是 EXL、红色野兽看起来与我们现在拥有的所有 XL 完全相同。 问题是为什么 TI 会在 X11插头引脚60上进行如此突然的更改、并且海报的 LP 与 Charles 完全相同?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    您并非孤军奋战。 当我阅读原理图时、我最初也有同样的疑问。 连接到 PB1的 TARGET_VBUS 来自 TPS2052B 电源开关。 TPS2052B 从三个电源中的一个(BoosterPack、TARGET_VBUS 或 DEBUG_VBUS)获取电源。 TPS2052的 EN2输入默认为低电平、这会关闭到 TARGET_VBUS 的开关、此外没有任何连接到器件 USB 端口的内容、因此 TARGET_VBUS 会打开、直到它从 MCU 的 PB1中获得。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="BP101"]也许海报发布板不是 EXL[/引用]

    MON AMI -您的"初级检测"徽章是否需要(部分)调查升级?

    您建议海报的 LPAD 可能不是 EXL -但他的"第一篇文章"显示了-不是一篇-而是张此类(完全相同) LPad (通过清晰可辨的照片)-都清晰地以屏幕显示:"EK-TM4C129EXL Rev A"

    因此-实际上-两个都是(相当) EXL!   您之前与声称的"大鱼"的战斗是否已经耗尽-使您(通常)的调查工作失败?

    [引用 user="BP101"]……    在同一系列的 LaunchPad 中不能保持一致的设计主体。  [/报价]

    您还可以注意到-"主要"(是您的朋友)、"原则"(基本真理或法律)是您的单词、"旨在使用"。   (再次-"语义"公司具有"鱼" BP 过账...)

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

    [引用 USER="CB1_MOBIT"]两个字都清晰地以屏幕形式显示:"EK-TM4C129EXL Rev 、 这两个版本都在 两个 LaunchPad 上都没有我的愿景、因此必须 信任您的话语。

    [引用 USER="CB1_MOBILE]因此-实际上-两个都是(相当) EXL!  [/引述] 也许是对的、但 X11引脚60不应产生+5V VDC (周期)、如示波器捕获10/25 10:01am 中清楚显示的那样。 它看起来像是 X11引脚60、它连接到 USB 端口 VBUS +5Vdc。  因此、EXL 和 XL 看起来是相同的 PCB 布局、只有 MCU 不同。   

    [引用 user="CB1_MOBIST"]您可能还会注意到-"主体"(是您的朋友)、"原则[/QUERES]

    您可能已经发现 +5V 对于  非+5V GPIO 引脚、电压可能会很高、而不是拼写错误? 我从来没有因为 英国 的同名  是可行的, 因为   在英国的专制国王数世纪以前,许多文明  都是更加简单的。  令    人奇怪的是,西班牙文并没有试图通过几种不同的拼写使同一声音的不同含义复杂化,因为我们经常听到这种拼写使他们和其他人很难学习英语。  

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

    10/25 10:01am (1) 2.4V 是示波器触发电平、引脚60显示为+5Vdc。 网页缩放再次正常工作现在可以看到 EXL、但如果 MCU 唯一的区别是它具有嵌入式加密、引脚60永远不会是+5V 电平。

    X11-HEADER (XL)、 无原理图 (EXL)评估 套件 PDF。 尽管表2-4是相同的(XL/EXL) X11-headers。 对于 来自 USB 端口的 VBUS 输入、引脚60只能耐受+5、CAN1 被显示为 TX 输出。  当   配置了备用 CAN1 时、似乎引脚60只应为3V3电平。   

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

    大家好 、很抱歉、我的国家/地区是一个漫长的假期、因此我不在示波器上。  无论如何,我能够再现查尔斯所观察到的情况。 我的调查结果如下:

    情况1:当程序在没有外部回送的情况下执行时、Tx 变为高电平至3V。

    CASE2: 当使用外部回送执行程序时、我能够看到 CAN 传输。

    是否需要此行为? 已附加相关屏幕快照。

    但是、这似乎只适用于我的 LaunchPad 之一。 对于另一个129EXL launchpad、CAN1_Tx 似乎始终在5V 时处于高电平。 ISR 似乎仅在 该特定 Launchpad 的外部回送配置中触发。 这种行为是否可能是 BP101指出的 TARGET_VBUS 造成的? 如何确认或调试此问题? (还连接了 CANStatusGet 的终端输出)。 还需要注意的是、通过单独探测 CAN1_Tx (不带 GND)、我会看到一些方波、例如噪声波。 这可以是 CAN 信号吗? (还随附了此示波器上限)。

    P.S1:CAN0似乎不能同时使用我的两个 LaunchPad (在此处确认之前、让我先进行两次和三次检查)。

    P.S2:很高兴知道忍者代码运行正常、我希望 camper 可以原谅我仍然使用忍者代码、因为经过充分测试的供应商代码在这种情况下也会产生相同的结果。

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

    您好!

     很高兴您取得了一些进展。  

    [引用用户="Gowtham"]

    情况1:当程序在没有外部回送的情况下执行时、Tx 变为高电平至3V。

    CASE2: 当使用外部回送执行程序时、我能够看到 CAN 传输。

    [/报价]

    是的、我认为这是预期的。 如果没有环回、RX 输入只会保持高电平。 CAN 控制器将立即检测到这是位0错误。

    [引用 user="Gowtham">不过、这似乎只适用于我的 LaunchPad 之一。 对于另一个129EXL launchpad、CAN1_Tx 似乎在5V 时始终处于高电平[/引述]

    这两个板是否是相同的129EXL 板? 如果所有跳线具有相同的设置、请检查它们。 我假设 TX 卡在5V 时、您也在外部环回中、对吧? 您能不能显示它保持5V 的示波器截图? 您还能探测 PD6的状态吗? 如果您将其强制为低电平、您是否会看到 TX 上的差异? 当 PD6为高电平时、它使开关能够向 TARGET_VBUS 提供5V 电源。  

    [引用 USER="Gowtham"]还需要注意的是,通过单独探测 CAN1_Tx (不带 GND),我看到一些方波,如噪声波。 这可以是 CAN 信号吗?[/quot]

     噪声的第三个示波器脉冲是什么? 这是您在第二次拍摄中展示的好板还是卡在5V 的坏板? 在第二次拍摄中、信号非常清晰。 我很困惑。 这是哪个板? 是否连接了收发器? 在中、您可以将触发模式设置为单次?  

      

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

    您好、Charles、

    非常感谢您迄今提供的帮助。 我也很高兴。

    [引用用户="Charles Tsaa"]

    这两个板是否是相同的129EXL 板? 如果所有跳线具有相同的设置、请检查它们。 我假设 TX 卡在5V 时、您也在外部环回中、对吧? 您能不能显示它保持5V 的示波器截图? 您还能探测 PD6的状态吗? 如果您将其强制为低电平、您是否会看到 TX 上的差异? 当 PD6为高电平时、它使开关能够向 TARGET_VBUS 提供5V 电源。

    [/报价]

    是的。 它们是相同的。 跳线处于默认设置。 是的、我在没有收发器(直接连接到示波器)的情况下以外部回送配置对它们进行了测试。 最初、Tx 为高电平、电压为5V、但在我用示波器探针接触 PD6的那一刻、Tx 变为低电平、电压为0V。 一旦从 PD6上移除探针、它再次变为高电平、电压为5V。 (PD6保持低电平)。

    带有蓝色跳线和跳线的电路板未出现故障:

    当 Tx 处于5V 高电平(通道1为 TX,通道2为 PD6)时,PD6未连接到此处的探针:

    连接 pd6后,TX 变为低电平:

    我的另一个 LaunchPad 不会发生这种情况。 无论探头是否连接到 PD6、另一个 LaunchPad 都能正常工作。 (PD6保持低电平)。 无线

    工作 launchpad 的 Socpe cap:

    BTW 是否可以与我分享129EXL 原理图的链接?

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

    [引用用户="Gowtham"> Tx 最初在5V 时为高电平、但在我用示波器探针接触 PD6的那一刻、Tx 就会在0V 时变为低电平。 一旦从 PD6上移除探针、它再次变为高电平、电压为5V。 (PD6保持低电平)。[/报价]

    您好、Gowtham、

    所有这些都是在长假期间休息、您发现问题与 PD6有关、似乎不 控制 EN2。  也许是时候 将 PD6走线从 MCU 引脚引出到 X11头并返回到 U4了。 我怀疑过孔没有一直镀好,所以不要害怕***带有探头尖端的过孔环,以确认通常超过300欧姆的无环电阻。

    当或者如果您通过我的技巧找到一个开孔、那就是通过 环形屏蔽(顶部/底部) PCB 进行刮擦、然后首先尝试使用足够的通量/热量和5mm 或更少的铁头来焊接填充孔。 下一种方法 是使用非常细的绕线、 当然剥离 绝缘层、使用精密尖头尖嘴尖嘴钳用力将其向下穿过孔、然后在  导线尖上涂抹充足的热通量/焊锡吸头左侧。

    请告诉我们您的发现。

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

    您好!

     您能否测量 TP4的电压并在可能的情况下测量 TPS2052B 的 EN2输入。  

     您有第三块电路板吗? 我不会调试有问题的电路板、而是建议您稍后返回到这个有问题的电路板、并首先关注您原来的问题是 CAN。 如果您可以让 CAN 与第三个电路板一起工作、那么您原来的不工作问题可能与有问题的电路板有关。  

     129EXL 和1294XL 具有相同的原理图。 您可以在此处找到1294XL 用户指南。 有关原理图、请参阅第5节。  

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

    您好 BP101:

    是的。 我的度假模式被毁了。哈哈。 嗯...好吧...我在哪里可以找到这个过孔以及找到哪个过孔确实有故障? (我对 PCB 调试知识非常了解)。

    您好、Charles、

    是的。 我现在可以看到故障电路板与工作电路板之间的差异。 TP4_working_board = 3.3V、TP4_Fault_board = 5V。我可以由此得出什么结论(为了学习起见,想知道这一点)?
    对于这两个电路板、PD6均为0V。

    是的。 你是对的。 如果 launchpad 太复杂、我想避免调试它、因为我现在主要关心的是使 CAN 总线及时工作。 如果可用、我将尝试搜索另一个 LaunchPad。

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

    大家好、

    因为 CAN1不工作。 我尝试使用 CAN0进行外部回送。 好消息是、我没有看到故障 Launchpad 的5V 电压。 但是、对于我使用 CAN0的两个 LaunchPad、CAN 传输似乎都不起作用。 从示波器电容器可以看到、启动程序后、Tx 线路似乎变高(~3V)。这会使我对代码产生怀疑。 请提供建议。 此时无终端输出。 由于资源有限、我正在研究一种将 RS232电缆用于 UART (终端)的方法。 附加了代码。

    跳线和引脚:

    波形

    e2e.ti.com/.../tx_5F00_can0.c

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

    您的跳线设置正确、以便在 PA0和 PA1上显示 CAN0。 您是否将 PA0和 PA1连接为 环回?  您是否为 CAN0运行 TivaWare 示例? 我运行了它、并且能够看到与使用 CAN1之前相同的波形。

    e2e.ti.com/.../can0_5F00_without_5F00_UART0.c