OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3592|回复: 3

stm8 硬件iic 从机无法接受数据

[复制链接]

29

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2015-1-12
在线时间
65 小时
发表于 2015-12-26 22:34:22 | 显示全部楼层 |阅读模式
1金钱
stm8 硬件iic 从机无法接受数据,接受到地址,并且已应答,
void  IIC_GPIO_INIT()
{
/*  配置IIC的IO口  为上拉输入*/
   //CLK->PCKENR1 |=0X01;
   GPIOB->DDR &= ~0x30;
   GPIOB->CR1 |= 0x30;
   GPIOB->CR2 &= ~0x30;
   
}
void IIC_INIT(void)
{
   
   I2C->CR1 = 0x00;
   I2C->CR2 =0x04; //使能应答            
   I2C->FREQR = 0x10; // Set I2C Freq value (16MHz)
   
   I2C->OARH |= 0x40;
   I2C->OARL = (SLAVE_ADDRESS );
   I2C->CR1 = 0x01;
   I2C->CR2   = 0X04;
   I2C->CR2  |= 0x02;
   
   I2C->ITR |= 0x07; //开启中断

  


}

/**
   * @brief I2C Interrupt routine.
   * @param  None
   * @retval None
   */
INTERRUPT_HANDLER(I2C_IRQHandler, 19)
{
   uint8_t temp1=0;
   uint8_t temp2=0;
   temp1=I2C->SR1;
   temp2=I2C->SR3;
   uint8_t data;
     if((I2C->SR1 & 0X02)==0x02) // 判读地址是否匹配
    {
      
       I2C->CR2 |= 0X04;
       I2C->SR1&=~(0x04);
     }
     if((I2C->SR1&0x10)==0x10)    //检测到停止位
    {
       temp1 = I2C->SR1;
       I2C->CR2|=0x04;  
      
     }
     if((I2C->SR1&0x40) == 0x40)    //接收数据
    {
        data= I2C->DR;
       if(IIC_RX_Finish==0)
       {
         IIC_RecBuffer[IIC_RX_NUM]=data;
         IIC_RX_NUM++;
         if(IIC_RX_NUM>=1){IIC_RX_Finish=1;IIC_RX_NUM=0; I2C->ITR = 0x00;}
         I2C->CR2 |= 0X04;//应答
      }
    }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-12-28 23:43:24 | 显示全部楼层
回复

使用道具 举报

29

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2015-1-12
在线时间
65 小时
 楼主| 发表于 2015-12-31 11:15:03 | 显示全部楼层
主机发地址左移一位
回复

使用道具 举报

2

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2016-1-2
在线时间
13 小时
发表于 2016-1-2 11:18:27 | 显示全部楼层
从来都是用软件模拟的,硬件I2C没研究过。帮顶!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表