查看: 7217|回复: 3

[S12] 大家看一下我的S12HA32中的IIC程序,为什么无应答啊!

[复制链接]

该用户从未签到

12

主题

79

帖子

0

中级会员

Rank: 3Rank: 3

积分
264
最后登录
2020-9-23
发表于 2010-5-7 09:55:54 | 显示全部楼层 |阅读模式
这是我使用S12HA32的内部IIC模块进行与AT24C01通讯,给EEPROM通信,不过数据发送后无应答!下面是代码:大家看一下!
//函数声明部分
void Sendbyte_i2c(unsigned char S_Data);
void Wait_ask(void);
unsigned char Receivebyte_i2c(void);
void Start_i2c(void);
void Stop_i2c(void);
void Init_i2c(void);
void Init_i2c(void) //i2c初始化
{
  IIC_IBFD=0x4c;    // frequency divider register:
 IIC_IBAD=0x00;// slave address of this module;
  IIC_IBCR|=0x80;  // enable I2C module and No interrupts;
}
void Start_i2c(void) //i2c开始
{
  IIC_IBCR_TXAK=0;
  IIC_IBCR|=0x30;
}

void Stop_i2c(void)  //i2c停止
{
 IIC_IBCR&=0xDF;
}

void Sendbyte_i2c(unsigned char S_Data)//i2c发送程序
{
 //DisableInterrupts;
 IIC_IBSR_IBIF=1;  //清除标志位
 IIC_IBDR=S_Data;
 while(!IIC_IBSR_IBIF);//等待响应
 IIC_IBSR_IBIF=1;  //清除标志位
 
}
void Wait_ask(void)  //应答等待程序
{
  while(IIC_IBSR_RXAK);
}

unsigned char Receivebyte_i2c(void)//i2c接收程序
{
    unsigned char R_Data;
    //DisableInterrupts;
    IIC_IBSR_IBIF=1;  //清除标志位
    IIC_IBCR_TX_RX=0; //作为接收
    IIC_IBCR_TXAK=1;//主机接收最后一个数据后不发送应答
    IIC_IBDR;  //空读启动发送
    R_Data = IIC_IBDR;
   return R_Data;
}
我知道答案 目前已有2人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-5-7 10:34:17 | 显示全部楼层

    RE:大家看一下我的S12HA32中的IIC程序,为什么无应答啊!

    你好。首先希望你能够去查看一下I2C的硬件资料,出现这个问题是由于I2C通信机制不完善,通信时序不正确导致的。
    I2C读取数据:
    1、写开始start
    2、写数据地址ADDR
    3、写开始读取start
    4、读取数据
    5、如果继续读取发送ack,不读取发送Nack
    如果连续读取N个字节,就要在每读取数据一次,发送一次ACK。
    该会员没有填写今日想说内容.

    该用户从未签到

    2

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    18
    最后登录
    1970-1-1
    发表于 2010-6-11 23:12:38 | 显示全部楼层

    回复:大家看一下我的S12HA32中的IIC程序,为什么无应答啊!

    我的程序也出现了相似问题,中断标志位有反应,但应答位一直没有。
    每次主机发送后是不是都要判断中断标志位和应答位?主机接收前是不是也要判断中断标志位?
    还有接收数据时为什么要空读一次?
     楼主是否已经解决问题了,可否分享一下经验,谢谢!

    该用户从未签到

    2

    主题

    10

    帖子

    0

    新手上路

    Rank: 1

    积分
    9
    最后登录
    1970-1-1
    发表于 2010-12-16 15:40:33 | 显示全部楼层

    回复:大家看一下我的S12HA32中的IIC程序,为什么无应答啊!

    这个问题我是刚刚解决,首先问你几个问题,你开始发送的第一个字节是不是IIC芯片的地址.第二,你看一下,你所用的IIC引脚,是不是默认引脚,如果不是,那你要设置引脚路径.
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-11 03:50 , Processed in 0.086965 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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