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.

[参考译文] TM4C129XNCZAD:单线制接口不工作

Guru**** 2392905 points
Other Parts Discussed in Thread: TM4C129XNCZAD

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/754375/tm4c129xnczad-one-wire-interface-not-working

器件型号:TM4C129XNCZAD

我有一个定制印刷电路板、它使用 TM4C129XNCZAD 上的 PG6通过单线协议与串行 EEPROM 通信。 我使用以下测试代码:

静态 bool busIsBusy (void)
{
uint32 busStatus = OneWireBusStatus (One_Wire_base);
返回(0!=(busStatus & ONEWIRE_BUS_STATUS_BUSY));
}


void one _wire_debug (void)
{
SysCtlPeripheralEnable( sysctl_Periph_GPIOG );
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOG))
{
}

SysCtlPeripheralEnable (SYSCTL_Periph_ONEWIRE0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_ONEWIRE0))
{
}

GPIOPinConfigure (GPIO_PG6_OWIRE);
GPIOPinTypeOneWire (GPIO_PORTG_base、GPIO_PIN_6);
OneWireInit (ONEWIRE0_BASE、
ONEWIRE_INIT_SPD_OD //超速总线时序
);

//等待初始化完成
while (busIsBusy());

while (1)
{
OneWireBusReset (ONEWIRE0_BASE);
sysDelayMilliseconds (5);
}
}

代码执行循环,其中持续调用 OneWireReset(),但我看不到 PG6上发出的任何信号。

我使用的是内置单线协议解码的逻辑分析仪。 我将其设置为在高电平到低电平转换时触发、但它从未看到过。

我修改了代码以将 PG6配置为 GPIO 输出、并在循环中定期发出低电平脉冲。 在这种情况下、逻辑分析仪会看到该信号、并将其正确解码为复位信号。

是否有任何想法、在为单线配置引脚时、我可能会做些什么? 我认为我遵循了 TivaWare 手册中的示例代码。

谢谢、

Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    执行此测试时、PG6的输出是卡在高电平还是低电平? 如果一直处于低电平、您使用的上拉电阻器值是多少?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Bob 的快速回答。 总线似乎一直处于低电平。 我在原理图上查找了一个上拉电阻器、但找不到一个上拉电阻器。 我必须与设计电路板的硬件工程师进行联系、以查看是否缺少任何内容。

    不过、我在芯片数据表中发现了一些令人困惑的东西、但:

    22.3功能说明

    单线是一种简单的单线通信接口、包含线协议、传输协议和基本会话协议(以及一些基本命令)。 线路协议通过改变线路保持低电平的时间(由一个电阻器上拉)来生成0和1。 TM4C129XNCZAD 微控制器是主器件、始终控制线路。 上拉电阻会使线路保持在高电平、并假定微控制器驱动器为正常的开漏。 此处无需特殊的 GPIO 配置、因为在微控制器外部负责开漏支持。 引脚配置信息见789页的表10-4。 可以在同一个单线引脚上读取和写入数据。 单线模块支持协议的最基本方面、包括线协议、字节传输控制和线路复位。 软件应处理会话协议、包括选择从站(当同一线路上有多个从站时)和更高级别的命令。

    我检查 了 GPIOPinTypeOneWire()的源代码,它似乎是为推挽操作而不是开漏设置端口。 这是正确的配置吗?

    此致、

    Dave

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


    硬件工程师确认、他忽略了添加上拉电阻器。 我得到了一个返工板、单线总线现在看起来工作正常。 感谢你的帮助。

    此致、

    Dave
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这种说法有点令人困惑。 其目的是当您选择1线作为备用功能时、无论管脚配置寄存器的状态如何、该管脚都被强制进入开漏模式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、谢谢!

    此致、

    Dave