我按照例程写了一段I2C代码,但在送数据时,
用示波器看不到总线上的数据出来,
但在INIT的前一段增加了IO拉低,确实连接和片子应该都是好的。
有人知道为啥么?
void I2C_Init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_2|GPIO_PIN_3 );
GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_2|GPIO_PIN_3 , GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
GPIOPinWrite(GPIO_PORTB_BASE , GPIO_PIN_2|GPIO_PIN_3 , 0 );
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0); //en I2C Pin
GPIOPinTypeI2C(SYSCTL_PERIPH_GPIOB,GPIO_PIN_2|GPIO_PIN_3);
I2CMasterInitExpClk(I2C0_MASTER_BASE , SysCtlClockGet() , false); //i2c0 400Kbps
I2CMasterInit(I2C0_MASTER_BASE, true);
I2CMasterEnable(I2C0_MASTER_BASE);
I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, 0x48, 0);
}
void I2C_Trans(char cmd)
{
while(1)
{I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);
I2CMasterDataPut(I2C0_MASTER_BASE, 0x61);
} |