我有 OM40002 开发板。
我发现的问题是,在将逻辑探针连接到 SDA 和 SCL 时,我只看到两条线都是高电平。(我使用的探头最大采样率为 48MHz)。
下面是我的代码:
#include "LPC8N04.h"
#define I2C_CLOCK (1u << 5)
int main(void) {
// Init pins
IOCON->PIO[0][4] = 1u; // SCL
IOCON->PIO[0][5] = 1u; // SDA
// Init clocks
SYSCON->SYSCLKCTRL &= ~0b1110u; // SYSCLKDIV = 0 => 8MHz
SYSCON->SYSCLKUEN &= ~1u; // Update system clock source
SYSCON->SYSCLKUEN |= 1u;
SYSCON->WDTCLKDIV = 1;
SYSCON->SYSAHBCLKCTRL |= I2C_CLOCK;
SYSCON->PRESETCTRL |= 0b10;
I2C0->CONCLR = 0b01101100;
I2C0->SCLH = 80; // 8 MHz / 80 = 100 kHz
I2C0->SCLL = 80;
I2C0->CONSET = 0b01000000; // I2EN
I2C0->CONSET = I2C0_CONSET_STA_MASK; // START
while (!(I2C0->CONSET & I2C0_CONSET_SI_MASK)) // Wait
;
I2C0->DAT = 0xAE; // Send slave addr
while (!(I2C0->CONSET & I2C0_CONSET_SI_MASK)) // Wait
;
I2C0->CONCLR |= (1 << 3);
while (!(I2C0->CONSET & I2C0_CONSET_SI_MASK)) // Wait
;
while (1) {
}
}调试结果表明,程序在倒数第二个 while 循环(就在 CONCLR 之后)上永远旋转着
我将板一分为二,并将6个调试引脚连接在两半之间,因为我认为与LED阵列的连接可能会导致问题。
我通过上拉电阻将 P4-1(PIO0_4/SCL)和 P4-3(PIO0_5/SDA)连接到 P4-5(VCC)。
我试过从 1k 到 100k 的上拉电阻,结果都一样。
我尝试过在连接和不连接从属设备的情况下都运行。
我尝试过的任何方法都无法在 SDA 或 SCL 上产生任何输出。
我尝试了多种编译和闪烁代码的方法,包括在 mcuexpresso 中创建一个新项目,使用默认选项,然后将 main 方法更改为上述方法。
你好@橙色茶蛙
BR
爱丽丝