主机发送程序:
我用了两块LM3s811,一块做主机发送,另一块设置为从机接收。但是各程序运行,却不产生中断,也不知能不能发送数据。接收数据也不成功。中断向量表也注册了。这是怎么回事啊?(下面是我设置的代码)
主机发送程序:
void I2CMasterINTHandler()
{
//I2CMasterIntClear(I2C_MASTER_BASE);
//I2CIntUnregister(I2C_MASTER_BASE);
while(I2CMasterBusBusy(I2C_MASTER_BASE)==0)
{
L12864_mesg(0,5,"产生中断");
// L12864_shu(4,2,ComparatorValueGet(COMP_BASE,0));
}
//I2CIntRegister(I2C_MASTER_BASE,*I2CMasterINTHandler); //注册一个中断
}
//主函数
int main()
{
jitagWait(); //防止JTAG失效,重要
clockInit(); //时钟初始化 ;晶振:6MHz
Ini_Lcd();
L12864_mesg(0,0,"内部时钟");
L12864_shu(4,0,TheSysClock);
//
// Enable the peripherals used by this example.
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
//
//初始化主机和从机
//
I2CMasterInitExpClk(I2C_MASTER_BASE,SysCtlClockGet(),true);
//I2CMasterInit(I2C_MASTER_BASE,false);
//
//自主编辑
//
I2CMasterEnable(I2C_MASTER_BASE); //使能主机
I2CMasterIntEnable(I2C_MASTER_BASE); //使能中断
//
//指定从机地址
//
I2CMasterSlaveAddrSet(I2C_MASTER_BASE,0x3B,false);
I2CIntRegister(I2C_MASTER_BASE,*I2CMasterINTHandler); //注册一个中断
//
//将发送的字符放到数据寄存器中
//
I2CMasterDataPut(I2C_MASTER_BASE,'W');
//
//启动字符从主机发送到从机
//
I2CMasterControl(I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_START);
//
//大循环
//
while(1)
{
L12864_mesg(0,3,"进入循环");
while(I2CMasterBusBusy(I2C_MASTER_BASE)==0)
{
L12864_mesg(0,2,"发送成功");
I2CMasterDataPut(I2C_MASTER_BASE,'W');
// L12864_shu(4,2,ComparatorValueGet(COMP_BASE,0));
}
}
}
从机接收程序代码:
void I2CMasterINTHandler()
{
I2CSlaveIntClear(I2C_SLAVE_BASE);
while(I2CSlaveIntStatus(I2C_SLAVE_BASE,false))
{
L12864_mesg(5,2,"产生中断");
L12864_shu(5,3, I2CSlaveDataGet(I2C_SLAVE_BASE));
}
}
//主函数
int main()
{
jitagWait(); //防止JTAG失效,重要
clockInit(); //时钟初始化 ;晶振:6MHz
Ini_Lcd();
L12864_mesg(0,0,"内部时钟");
L12864_shu(4,0,TheSysClock);
//
// Enable the peripherals used by this example.
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
//
//初始化主机和从机
//
I2CMasterInitExpClk(I2C_SLAVE_BASE,SysCtlClockGet(),true);//这一句不明白是不是该设置
//I2CMasterInit(I2C_MASTER_BASE,false);
I2CSlaveInit(I2C_SLAVE_BASE,0x3B); //初始化从机地址
//
//自主编辑
//
I2CIntRegister(I2C_SLAVE_BASE,*I2CMasterINTHandler); //注册一个中断
I2CSlaveEnable(I2C_SLAVE_BASE); //使能从机
I2CSlaveIntEnable(I2C_SLAVE_BASE); //使能中断
while(1)
{
while(I2CMasterBusy(I2C_SLAVE_BASE)==0)
{
L12864_mesg(0,2,"接收成功");
L12864_shu(0,3, I2CSlaveDataGet(I2C_SLAVE_BASE));
}
}
}
上面我是写了两个程序,然后是分别烧写入两块板子的,最后连接其I2C口来进行通信。可是没有发送和接收数据!恳请专家指点!!(诚挚感谢)