初学 lm3s316 i2c proteus 仿真

2019-03-24 13:16发布

用最简单的轮询方式(用延时代替),代码如下:
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
  SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C);

//GPIOPinConfigure(0x00010801);//GPIO_PB2_I2C0SCL
  //GPIOPinConfigure(0x00010C03);//GPIO_PB3_I2C0SDA  0x00010C01   //这两行注释和不注释都试过了
  GPIOPinTypeI2C(GPIO_PORTB_BASE,GPIO_PIN_2|GPIO_PIN_3);
I2CMasterInitExpClk(I2C_MASTER_BASE,SysCtlClockGet(),false);
I2CMasterSlaveAddrSet(I2C_MASTER_BASE,0xA0,false);
  I2CMasterDataPut(I2C_MASTER_BASE,0x00);
  I2CMasterControl(I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_START);
  timeDelay(8000);                                                                                       //延时时,很大的数也试过了
  I2CMasterDataPut(I2C_MASTER_BASE,0x0a);
  I2CMasterControl(I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);  
  timeDelay(8000);
  I2CMasterSlaveAddrSet(I2C_MASTER_BASE,0x3B,true);
  I2CMasterControl(I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_FINISH);
  timeDelay(8000);

只看到发出I2C_MASTER_CMD_BURST_SEND_START 了,后边发送的那两个数据却看不到.
不知什么原因,谢谢各位了. 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
mqqjqr5566
2019-03-24 22:39
I2CMasterSlaveAddrSet(I2C_MASTER_BASE,0xA0,false);
这一行中的0xA0改为0x50就行了.因为在其函数库里会将此参数做HWREG(ulBase + I2C_O_MSA) = (ucSlaveAddr << 1) | bReceive;运算.也就是将地址右移了一位.

一周热门 更多>

相关问题

    相关文章