主题中讨论的其他器件:PCF8574A
我向 I2C 线路添加了10 K 上拉电阻器。 昨天、CLK 和数据线在示波器中清晰可见。 我昨天使用的评估板爆炸了、我今天带来了一个新的评估板。 我连接了它、并且正在运行 I2C 环回示例(未连接从器件、注释掉了 UART printf)、并且 I2C 时钟不会显示在示波器上。 上拉电阻仍然为10 K。评估板正常、运行时呈闪烁。 我不是很好。
谢谢、
Priya
CLK 回来了。 我进行了一些万用表测量
时钟问题已解决。 但是、我需要了解从器件 ACK 的工作原理。 器件为 PCF8574A、这是一款无寄存器的8位 I2C I/O 扩展器芯片。 如果我写入地址并等待、我在示波器上看不到任何 I2C CLK 触发器。 I2C 活动仅在 I2CMasterControl ( I2C0_BASE、I2C_MASTER_CMD_SINGLE_SEND)之后可见;
您是否有任何关于如何处理 ACK 信号的指针?
谢谢
Priya
uint32_t g_ui32SysClock;
int main (空)
{
volatile uint32_t ui32Loop;
//
//使用前必须启用 I2C0外设。
//
SysCtlPeripheralEnable (SYSCTL_Periph_I2C0);
//
//对于本示例,I2C0与 PortB[3:2]一起使用。 实际端口和
//使用的引脚可能与您的器件不同、请参阅的数据表
//更多信息。 GPIO 端口 B 需要启用、因此这些引脚可以
//使用。
// TODO:将其更改为您正在使用的 GPIO 端口。
//
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
//
//为端口 B2和 B3上的 I2C0功能配置引脚复用。
//如果您的器件不支持引脚复用、则无需执行此步骤。
// TODO:更改此选项以选择您正在使用的端口/引脚。
//
GPIOPinConfigure (GPIO_PB2_I2C0SCL);
GPIOPinConfigure (GPIO_PB3_I2C0SDA);
//
//为这些引脚选择 I2C 功能。 此函数也会
//为 I2C 操作配置 GPIO 引脚,将其设置为
//开漏操作,弱上拉。 请参阅数据表
//查看每个引脚分配了哪些功能。
// TODO:更改此选项以选择您正在使用的端口/引脚。
//
GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、GPIO_PIN_2);
GPIOPinTypeI2C (GPIO_PORTB_BASE、GPIO_PIN_3);
G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
//初始化相关的外设和端口
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOB));
SysCtlPeripheralDisable (SYSCTL_Periph_I2C0);
SysCtlPeripheralReset (SYSCTL_Periph_I2C0);
SysCtlPeripheralEnable (SYSCTL_Periph_I2C0);
//初始化400kbps 的主站和从站//extern uint32_t g_ui32SysClock;
I2CMasterInitExpClk (I2C0_BASE、g_ui32SysClock、false);//快速模式= true (400kB/s)
I2CMasterEnable (I2C0_BASE);
while (1)
{
I2CMasterSlaveAddrSet (I2C0_BASE、MOSFET_ADDRESS、1);
for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +)
{
}
I2CMasterDataPut (I2C0_BASE、红色);
I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_SINGLE_SEND);
for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +)
{
}
/*
I2CMasterSlaveAddrSet (I2C0_BASE、MOSFET_ADDRESS、0);
I2CMasterDataPut (I2C0_BASE、绿色);
I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_SINGLE_SEND);
for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +)
{
}
I2CMasterSlaveAddrSet (I2C0_BASE、MOSFET_ADDRESS、0);
I2CMasterDataPut (I2C0_BASE、琥珀色);
I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_SINGLE_SEND);
for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +)
{
}
*
}
}