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