你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

IIC SLAVE 问题,请管理员和版主关注下,谢谢哦~

[复制链接]
瘦猪呆兔 提问时间:2011-5-3 13:43 /
void I2C2_EV_IRQHandler(void) 
{
    u8 temp;
 u8 IIC_LEN;
 u8 i;
 u8 IIC_STRSUM;
 switch (I2C_GetLastEvent(I2C2))
  {
   case I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED:
      {
      IIC_SENDNUMB=0;
      //I2C2->DR=IIC_SLAVE_SENDBUF[IIC_SENDNUMB];
      I2C_SendData(I2C2,IIC_SLAVE_SENDBUF[IIC_SENDNUMB]);
     // while(I2C2->SR2&0x0040);
      IIC_SENDNUMB++;
      IIC_SENDFLAG=1;
                 
       };break;
    case I2C_EVENT_SLAVE_BYTE_TRANSMITTED:
       {
          
          //I2C2->DR=IIC_SLAVE_SENDBUF[IIC_SENDNUMB];
          I2C_SendData(I2C2,IIC_SLAVE_SENDBUF[IIC_SENDNUMB]);
     //  while(I2C2->SR2&0x0040);
          IIC_SENDNUMB++;
          IIC_SENDFLAG=1;
          break;
                 }   
     case I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED:
          {
            IIC_RECENUMB=0;
         temp=I2C_ReceiveData(I2C2);                                    
         break;
          }
     case I2C_EVENT_SLAVE_BYTE_RECEIVED:
          {
      //IIC_RECEFLAG=1;
           temp=I2C_ReceiveData(I2C2);
     switch (IIC_SLAVE_STEP)
      {
       case 0:{
         
         if(temp==0xfa)
          {
          // IIC_RECEFLAG=1;
           IIC_SLAVE_RECBUF[IIC_RECENUMB]=temp;
           IIC_RECENUMB++;
           IIC_SLAVE_STEP++;
           //IIC_RECEFLAG=1;
          }
             };break;
       case 1:{
          if((temp==0xb0)||(temp==0xb1)||(temp==0xb2)||(temp==0xb3)||(temp==0xb4)
            ||(temp==0xb5)||(temp==0xb6)||(temp==0xb8)||(temp==0xbe)||(temp==0xbf)
            ||(temp ==0xba)||(temp==0xbd)||(temp==0xbb)||(temp==0xaa)||(temp == 0xb9)
            ||(temp == 0xb7)||(temp ==0xbc)||(temp==0xd0))
           {
          // IIC_RECEFLAG=1;
            if((temp == 0xb0)||(temp == 0xb2)||(temp == 0xb4)||(temp == 0xbe)
            ||(temp == 0xbb)||(temp == 0xb9)||(temp == 0xb7)||(temp==0xd0))      // 11.1增加故障转运行
              {
               IIC_WILL_GET_LEN = 4;
              }
             else if ((temp == 0xb1 )||(temp == 0xb3)||(temp == 0xb5)||(temp == 0xb6)
                 ||(temp == 0xb8)||(temp == 0xbf)||(temp == 0xba)||(temp == 0xbc))  //11.1增加确认故障转运行
              {
               IIC_WILL_GET_LEN = 8;
              }
             else if (temp ==0xbd)
              {
               IIC_WILL_GET_LEN =5;
              }
             IIC_SLAVE_RECBUF[IIC_RECENUMB]=temp;
             IIC_RECENUMB++;
             IIC_SLAVE_STEP++;
           }
          else
           {
            IIC_RECENUMB=0;
           }
             };break;
       case 2:{
          
           if((temp==0xf5)&&(IIC_RECENUMB==(IIC_WILL_GET_LEN-1)))
            {
            
             IIC_SLAVE_RECBUF[IIC_RECENUMB]=temp;
             IIC_RECENUMB++;
             IIC_LEN=IIC_RECENUMB-2;
             IIC_STRSUM=0;
             for(i=1;iCR1&=0xffff;
      
     };break;
   
    default:break; 
 }
麻烦帮我看看I2C中断发送有没有问题,不能连续发送啊~!!!
收藏 评论3 发布时间:2011-5-3 13:43

举报

3个回答
瘦猪呆兔 回答时间:2011-5-3 14:01:13

RE:IIC SLAVE 问题

void IIC2_Configuration(void) //串口1初始化
{
  I2C_InitTypeDef  I2C_InitStructure;
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10 | GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
   
  I2C_DeInit(I2C2);
  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  I2C_InitStructure.I2C_OwnAddress1 = 0xc0;
  I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;
  
  I2C_Cmd(I2C2, ENABLE);
  I2C_Init(I2C2, &I2C_InitStructure);
}
这个是IIC初始化程序。
瘦猪呆兔 回答时间:2011-5-3 14:02:34

RE:IIC SLAVE 问题

主循环
for(;;)
   {
           /*
        for(z=0;z
瘦猪呆兔 回答时间:2011-5-4 15:38:51

RE:IIC SLAVE 问题,请管理员和版主关注下,谢谢哦~

斑竹呢?

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版