微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > cc3200做slave中断问题

cc3200做slave中断问题

时间:10-02 整理:3721RD 点击:

大家好,我最近遇到了一些困扰我很久的问题,希望大家能提出解决方法或者建议。

我用cc3200做一个从机中断去接收主机发过来的一个字符,大致代码如下:

我在Debug模式下通过设置断点发现,可以跳进中断,但是uiStatus= I2CSlaveStatus(I2CA0_BASE)返回的值是0;这是什么原因呢?

void I2C0_IRQHandler(void)
{
     uint32_t uiStatus;
     uint32_t data;
     uiStatus = I2CSlaveStatus(I2CA0_BASE);
     data=I2CSlaveDataGet(I2CA0_BASE);
     I2CSlaveIntClearEx(I2CA0_BASE, I2C_SLAVE_INT_DATA);
     if(uiStatus & I2C_SCSR_DA)
     {

          data=I2CSlaveDataGet(I2CA0_BASE);
     }

     else if(uiStatus & I2C_SCSR_TREQ)
     {

     }
}

void I2C_Init(void)
{
     //PRCMPeripheralClkDisable(PRCM_I2CA0, PRCM_RUN_MODE_CLK);

     //Enable I2C Peripheral
     PRCMPeripheralClkEnable(PRCM_I2CA0, PRCM_RUN_MODE_CLK);
     PRCMPeripheralReset(PRCM_I2CA0);

     //Init Slave Mode, Set Slave Address
     I2CSlaveInit(I2CA0_BASE, MASTER_I2C_ADDR);

     I2CSlaveFIFODisable(I2CA0_BASE);

     //Enable Slave Interrupt
     I2CSlaveIntEnableEx(I2CA0_BASE, I2C_SLAVE_INT_START|I2C_SLAVE_INT_STOP|I2C_SLAVE_INT_DATA);

     //Register I2C Interrupt
     I2CIntRegister(I2CA0_BASE, I2C0_IRQHandler);

     //I2CMasterInitExpClk(I2CA0_BASE,80000000,false);

     I2CSlaveDataGet(I2CA0_BASE);

     //Enable Processor
     IntEnable(INT_I2CA0);
}

void main()
{
     //
     // Initailizing the board
     //
     BoardInit();
     //
     // Muxing for Enabling UART_TX and UART_RX.
     //
     PinMuxConfig();
     //
     // Initialising the Terminal.
     //
     InitTerm();

     I2C_Init();

     while(1)
     {

     }
}

我看有人已经解决了这个问题,http://www.deyisupport.com/question_answer/wireless_connectivity/wifi/f/105/p/70026/181897.aspx#181897

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top