打印
[STM8]

STM8S I2C问题

[复制链接]
359|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxmmi|  楼主 | 2022-12-9 19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM8S105S4 I2C这样配置可以从机发数据,从机接数据就不行,是什么问题

//I2C端口初始化
GPIO_Init(GPIOE,GPIO_PIN_1|GPIO_PIN_2, GPIO_MODE_OUT_OD_HIZ_SLOW);

void I2C_init(void)
{
I2C_CCRH   = 0;    //标准I2C接口
I2C_CCRL    = 80 ;
I2C_FREQR = 16;
I2C_OARL   = (I2CAddr<<1);
I2C_OARH  = 0x40;
I2C_ITR      =  0x06;
I2C_CR1     =  0x01;
I2C_CR2   |=  0x04;
}

@far @interrupt void I2C_Handler (void)
{
u8 state1,state2,state3;

state1 = I2C_SR1;
state2 = I2C_SR2;
state3 = I2C_SR3;

//地址匹配
if((state1&0x02)!=0){I2C_CR2 |= 0x04;}

        //接收到数据,需要处理
if( (state1& 0x40) != 0)
     {
     I2C_CR2  |= 0x04;
     temp1  = I2C_DR;
SetOutput(temp1);
     }

//从机需要发送数据
if((state1 & 0x80) != 0)   
     {
     I2C_DR = num++;
     }

if((state2 & 0x04) != 0)I2C_SR2 &= ~0x04; //应答失败,清除该位

if((state1 & 0x10) != 0)
{
I2C_CR2 = 0x02;
}

}

我写成这样子,发现现在是从机发数据是没问题,从机接收数据不行,没有进入中断。

使用特权

评论回复
沙发
xxrs| | 2022-12-9 19:13 | 只看该作者
  成功传输一次正确的数据后就进不去了。程序还正常运行。

使用特权

评论回复
板凳
dengdc| | 2022-12-9 19:13 | 只看该作者
听说以前大部分是没有外部中断的,只有端口中断

使用特权

评论回复
地板
jiajs| | 2022-12-9 19:15 | 只看该作者
楼主要没有进入中断?

使用特权

评论回复
5
juventus9554| | 2022-12-9 19:18 | 只看该作者
发数据可以进入中断,接收数据怎么会进不了中断呢

使用特权

评论回复
6
dengdc| | 2022-12-9 19:19 | 只看该作者
主机发了从地址的器件地址,匹配的时候,就进入了中断那个时候也是接收

使用特权

评论回复
7
xxmmi|  楼主 | 2022-12-9 19:22 | 只看该作者

#define I2CAddr 0x01
在主机
  //主机写数据,从机接,这个不行
   Soft_I2C_Start();
    Soft_I2C_Write(0x02);
    Soft_I2C_Write(0xAA);
    Soft_I2C_Stop();
    //主机接收数据。没有运行上一段程序,主机可以接收数据,运行上段,主机接收数据都是255
    Soft_I2C_Start();
    Soft_I2C_Write(0x03);
    var0=Soft_I2C_Read(1);
    Soft_I2C_Stop();
    这个软I2C在控制其它设备是没有问题的,主机用的芯片是STM32。应该是没有问题的

使用特权

评论回复
8
pangb| | 2022-12-9 19:25 | 只看该作者
问题就在这里I2C_CR2 = 0x02; 修改为I2C_CR2 |= 0x02;&nbsp;&nbsp;原因是修改了,第一次成功后,没有再回复

使用特权

评论回复
9
dengdc| | 2022-12-9 19:27 | 只看该作者
第一次成功后了,你把应答给关掉了,还怎么接收啊

使用特权

评论回复
10
wyjie| | 2022-12-9 19:29 | 只看该作者
有时候iic不如模拟的好使

使用特权

评论回复
11
llljh| | 2022-12-9 19:36 | 只看该作者

如果把主从换换试试呢

使用特权

评论回复
12
xxrs| | 2022-12-9 19:37 | 只看该作者
开启中断了吗

使用特权

评论回复
13
supernan| | 2022-12-9 19:41 | 只看该作者
主机这边没有收到握手数据吗

使用特权

评论回复
14
heweibig| | 2022-12-9 19:43 | 只看该作者
具体什么现象啊

使用特权

评论回复
15
jiahy| | 2022-12-9 19:47 | 只看该作者
需要手动清除标志位?

使用特权

评论回复
16
jiaxw| | 2022-12-9 19:49 | 只看该作者
iic时序不好弄

使用特权

评论回复
17
jiajs| | 2022-12-9 19:51 | 只看该作者
看这个代码看不出来

使用特权

评论回复
18
yszong| | 2022-12-9 19:54 | 只看该作者
连错误码都收不到吗

使用特权

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

本版积分规则

369

主题

4278

帖子

2

粉丝