引用: Evawang 发表于 2018-8-13 07:45
补充一点。配置I2C是,要用如下函数:
GPIOPinTypeI2CSCL(GPIO_PORTB_BASE,GPIO_PIN_2);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
你好!我的是这么配置的
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能GPIO
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);//使能I2C0
GPIOPinConfigure(GPIO_PB2_I2C0SCL);//配置GPIO引脚复用功能
GPIOPinConfigure(GPIO_PB3_I2C0SDA);//配置GPIO引脚复用功能
//GPIOPinTypeI2C(GPIO_PORTB_BASE,GPIO_PIN_2|GPIO_PIN_3);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2);
// HWREG(I2C0_BASE + I2C_O_MCR);
I2CMasterInitExpClk(I2C0_BASE,SysCtlClockGet(),false);//配置I2C0 时钟 传输速率 100k 0 100k
写入的是
add=ustrtoul(argv[1], 0,8);
adddata=ustrtoul(argv[2],0,8);
I2CMasterSlaveAddrSet(I2C0_BASE,0xa0,false);//true 主机从从机读出数据 false主机写入从机 数据
I2CMasterDataPut(I2C0_BASE,add);//写入到从机的数据(地址)
I2CMasterControl(I2C0_BASE,I2C_MASTER_CMD_SINGLE_SEND);
while(I2CMasterBusy(I2C0_BASE));
I2CMasterDataPut(I2C0_BASE,adddata);//写入到从机的数据(地址)
I2CMasterControl(I2C0_BASE,I2C_MASTER_CMD_SINGLE_SEND);
while(I2CMasterBusy(I2C0_BASE));
UARTprintf("write......OK");
存储器用的是24c02 不知到为什么就是写不进去
不知道为什么有时候写好几次 才能有scl 或者 sda的 变化是因为 scl配置的不正确
HWREG(I2C0_BASE + I2C_O_MCR);句具体有什么用? 谢谢
引用: Evawang 发表于 2018-8-13 07:45
补充一点。配置I2C是,要用如下函数:
GPIOPinTypeI2CSCL(GPIO_PORTB_BASE,GPIO_PIN_2);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
你好!我的是这么配置的
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能GPIO
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);//使能I2C0
GPIOPinConfigure(GPIO_PB2_I2C0SCL);//配置GPIO引脚复用功能
GPIOPinConfigure(GPIO_PB3_I2C0SDA);//配置GPIO引脚复用功能
//GPIOPinTypeI2C(GPIO_PORTB_BASE,GPIO_PIN_2|GPIO_PIN_3);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2);
// HWREG(I2C0_BASE + I2C_O_MCR);
I2CMasterInitExpClk(I2C0_BASE,SysCtlClockGet(),false);//配置I2C0 时钟 传输速率 100k 0 100k
写入的是
add=ustrtoul(argv[1], 0,8);
adddata=ustrtoul(argv[2],0,8);
I2CMasterSlaveAddrSet(I2C0_BASE,0xa0,false);//true 主机从从机读出数据 false主机写入从机 数据
I2CMasterDataPut(I2C0_BASE,add);//写入到从机的数据(地址)
I2CMasterControl(I2C0_BASE,I2C_MASTER_CMD_SINGLE_SEND);
while(I2CMasterBusy(I2C0_BASE));
I2CMasterDataPut(I2C0_BASE,adddata);//写入到从机的数据(地址)
I2CMasterControl(I2C0_BASE,I2C_MASTER_CMD_SINGLE_SEND);
while(I2CMasterBusy(I2C0_BASE));
UARTprintf("write......OK");
存储器用的是24c02 不知到为什么就是写不进去
不知道为什么有时候写好几次 才能有scl 或者 sda的 变化是因为 scl配置的不正确
HWREG(I2C0_BASE + I2C_O_MCR);句具体有什么用? 谢谢
举报