我有一个定制印刷电路板、它使用 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