求助 这些天一直在弄iic 现在都快疯了
程序的框架用了 qs—rgb 下面写的是读出数据 不知道为什么读出来的都是FF;
- int CMD_read(int argc, char **argv)
- {
- uint32_t add,adddata;
- if(argc==2)
- {
- add=ustrtoul(argv[1], 0, 16);
- if(true==I2CMasterBusy(I2C0_BASE))
- {
- UARTprintf("busy
");
- }
- else
- {
- UARTprintf("no busy
");
- }
- I2CMasterSlaveAddrSet(I2C0_BASE,0xa0,true);//true 主机从从机读出数据 false主机写入从机 数据
- I2CMasterDataPut(I2C0_BASE,0x00);//写入到从机的数据(地址)
- UARTprintf(">%x
",add);
- I2CMasterControl(I2C0_BASE,I2C_MASTER_CMD_SINGLE_SEND);//I2C_MASTER_CMD_BURST_SEND_START;
- adddata=I2CMasterDataGet(I2C0_BASE);//从主机模块获取从机的数据
- UARTprintf(">%d
",I2CMasterErr(I2C0_BASE));
- UARTprintf(">%x
",adddata);
- return (0);
- }
- }
复制代码IIC初始化
- void ConfigureI2C(void)
- {
- 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);
- HWREGB(I2C0_BASE + I2C_O_MCR);这句不知道该不该用 试了一下用和不用的结果好像都是一样的
- I2CMasterInitExpClk(I2C0_BASE,SysCtlClockGet(),false);//配置I2C0 时钟 传输速率 100k 0 100k 1 400k
- }
复制代码
此帖出自
小平头技术问答
一周热门 更多>