TI中文支持网
TI专业的中文技术问题搜集分享网站

TIVA I2C问题,为什么总是busy

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "driverlib/rom.h"
#include "driverlib/i2c.h"

char data;

void main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);//50MHz

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);

GPIOPinConfigure(GPIO_PB2_I2C0SCL);
GPIOPinConfigure(GPIO_PB3_I2C0SDA);

GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);

I2CMasterEnable(I2C0_BASE);
I2CMasterInitExpClk(I2C0_BASE,SysCtlClockGet(),false);

I2CMasterSlaveAddrSet(I2C0_BASE,0XAE,true);

while(1)
{
I2CMasterControl(I2C0_BASE,I2C_MASTER_CMD_SINGLE_RECEIVE);
while(I2CMasterBusy(I2C0_BASE));
if(I2CMasterErr(I2C0_BASE)==I2C_MASTER_ERR_NONE)
data=I2CMasterDataGet(I2C0_BASE);
}

}

调试是发现程序总是卡在while(I2CMasterBusy(I2C0_BASE));求指点

user151383853:

软件上验证一下 I2c 寄存器设置.

硬件上也要验证一下 i2c 两条线的;连接和状态, 比如 SCL 线常低了, 短路了

Michael Sun:

代码不全呀,中断服务程序没写吗?

xyz549040622:

你抓波形看看,是不是硬件问题

赞(0)
未经允许不得转载:TI中文支持网 » TIVA I2C问题,为什么总是busy
分享到: 更多 (0)