打印
[STM8]

STM8S005K6硬件I2C无法进入中断问题

[复制链接]
2663|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MeiJor|  楼主 | 2014-10-17 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,STM8S005K6硬件I2C无法进入中断问题已经调试了五天了,目前剩下最后一招是自杀了。:Q

其中代码都是用官网自带的库,调试过程每个寄存器的值也看过,设置进去的值是对的。
先看代码

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //时钟配置16M

//I2C初始化,全部都是官网固件库函数
void initI2C(void)
{
        I2C_DeInit();
       
#ifdef I2C_slave_7Bits_Address
  I2C_Init(100000, SLAVE_ADDRESS, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);    //我的是选择这个,地址0X30        
#else
  I2C_Init(100000, SLAVE_ADDRESS, I2C_DUTYCYCLE_2, I2C_ACK_CURR,I2C_ADDMODE_10BIT, 16);
#endif

  /* Enable Error Interrupt*/
  I2C_ITConfig((I2C_IT_TypeDef)(I2C_IT_ERR | I2C_IT_EVT | I2C_IT_BUF), ENABLE);
}

接下来就到中断函数了
INTERRUPT_HANDLER(I2C_IRQHandler, 19)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
  /* Read SR2 register to get I2C error */
  if ((I2C->SR2) != 0)
  {
    /* Clears SR2 register */
    I2C->SR2 = 0;
  }
  Event = I2C_GetLastEvent();
  switch (Event)
  {
      /******* Slave transmitter ******/
      /* check on EV1 */
    case I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED:
      Tx_Idx = 0;
      break;

      /* check on EV3 */
    case I2C_EVENT_SLAVE_BYTE_TRANSMITTING:
      /* Transmit data */
      I2C_SendData(Slave_Buffer_Rx[Tx_Idx++]);
      break;
      /******* Slave receiver **********/
      /* check on EV1*/
    case I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED:
      break;

      /* Check on EV2*/
    case I2C_EVENT_SLAVE_BYTE_RECEIVED:
      Slave_Buffer_Rx[Rx_Idx++] = I2C_ReceiveData();
      break;

      /* Check on EV4 */
    case (I2C_EVENT_SLAVE_STOP_DETECTED):
            /* write to CR2 to clear STOPF flag */
            I2C->CR2 |= I2C_CR2_ACK;
      break;

    default:
      break;
  }
        if(Tx_Idx == 255) Tx_Idx=0;
        if(Rx_Idx == 255) Rx_Idx=0;
}

更让我不解的是同一个代码我工程配置为STM8S003F3则中断正常,配置为STM8S005K6则就进不了中断。

我的STM8S005K6 I2C是做从机,主机发送过来波行已经量过是正确的,STM8S005K6从机没有返回ACK。

请大家赐教啊...项目万分火急中...



沙发
MeiJor|  楼主 | 2014-10-17 10:20 | 只看该作者
论坛上也有人提过STM8S的硬件I2C可能有问题,是不是真的这样?

使用特权

评论回复
板凳
MeiJor|  楼主 | 2014-10-17 16:53 | 只看该作者
没人遇到过I2C问题吗?

使用特权

评论回复
地板
qq00568| | 2016-6-21 23:33 | 只看该作者
搞定没有,我也困这。qq:663883753联系

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝