找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[M051] M051 I2C SI and ISCstatus觸發時間搞不清楚

[复制链接]
跳转到指定楼层
楼主
mclarenpingu 发表于 2014-8-30 23:08:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
哈搂各位高手們好,小弟剛接觸M051買了溫子棋老師的書看,可是有一點真的是一直搞不清楚
以下是成是範例
*****************************************
*函数名称:Timed_Write_Cycle
*输    入:无
*输    出:无
*功    能:同步的写周期
******************************************/
void Timed_Write_Cycle(void)                  
{
    while (I2STATUS != 0x18) //0x18=00011000 Master Transmit Address ACK
    {
        //启动
        I2CON |= STA;              
        I2CON |= SI;     
        while ((I2CON & SI) != SI);
        I2CON &= ((~STA) & (~SI)); //請問這是i2c清零的動作嗎??但是I2C清零不是要寫1嗎?還是說先寫進i2con,等下次I2CON |= SI;發生時在寫入

        //设备地址
        I2DAT = EEPROM_SLA | EEPROM_WR; //set address and read/write mode.
        I2CON |= SI; //怪怪的,是I2C清零還是還是啟動I2C下個狀態,應該是啟動I2C下個狀態,但是那由誰來寫1清零呢
        while ((I2CON & SI) != SI);
    }

    if (I2STATUS != 0x18)                          //检查应答
    {
        DEBUGMSG("Not ACK returned!");
    }

    //停止
    I2CON |= STO;        //why stop?? don't know
    I2CON |= SI;  //請問是清零 還是下個狀態啟動
    while (I2CON & STO);
}

小弟看了新唐的技術參考手冊,可是還是摸不清楚I2C SI觸發和status的關係
文件上都是說SI觸發後下個周期status反映,但是SI是不是會一直維持到下個status要發生的時候,寫一次1進去,作清零,跟觸發下次status阿
有沒有詳細的時序關係圖阿,小弟找好多資料都找不到耶
希望這裡的高手可以幫忙一下
感激不盡

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

沙发
何嘉诚1989 发表于 2014-9-5 16:23:49 | 只看该作者
你可以控制时钟的,那个就是时序
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU