亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? i2c.c

?? S3C2440硬件板級測試程序
?? C
字號:
/*
 * FILE: i2c.c
 * 用于主機發送/接收
 */
#include <stdio.h>
#include "s3c24xx.h"
#include "i2c.h"

void Delay(int time);

#define WRDATA      (1)
#define RDDATA      (2)

typedef struct tI2C {
    unsigned char *pData;   /* 數據緩沖區 */
    volatile int DataCount; /* 等待傳輸的數據長度 */
    volatile int Status;    /* 狀態 */
    volatile int Mode;      /* 模式:讀/寫 */
    volatile int Pt;        /* pData中待傳輸數據的位置 */
}tS3C24xx_I2C, *ptS3C24xx_I2C;

static tS3C24xx_I2C g_tS3C24xx_I2C;

/*
 * I2C初始化
 */
void i2c_init(void)
{
    GPEUP  |= 0xc000;       // 禁止內部上拉
    GPECON |= 0xa0000000;   // 選擇引腳功能:GPE15:IICSDA, GPE14:IICSCL

    INTMSK &= ~(BIT_IIC);

    /* bit[7] = 1, 使能ACK
     * bit[6] = 0, IICCLK = PCLK/16
     * bit[5] = 1, 使能中斷
     * bit[3:0] = 0xf, Tx clock = IICCLK/16
     * PCLK = 50MHz, IICCLK = 3.125MHz, Tx Clock = 0.195MHz
     */
    IICCON = (1<<7) | (0<<6) | (1<<5) | (0xf);  // 0xaf

    IICADD  = 0x10;     // S3C24xx slave address = [7:1]
    IICSTAT = 0x10;     // I2C串行輸出使能(Rx/Tx)
}

/*
 * 主機發送
 * slvAddr : 從機地址,buf : 數據存放的緩沖區,len : 數據長度 
 */
void i2c_write(unsigned int slvAddr, unsigned char *buf, int len)
{
    g_tS3C24xx_I2C.Mode = WRDATA;   // 寫操作
    g_tS3C24xx_I2C.Pt   = 0;        // 索引值初始為0
    g_tS3C24xx_I2C.pData = buf;     // 保存緩沖區地址
    g_tS3C24xx_I2C.DataCount = len; // 傳輸長度
    
    IICDS   = slvAddr;
    IICSTAT = 0xf0;         // 主機發送,啟動
    
    /* 等待直至數據傳輸完畢 */    
    while (g_tS3C24xx_I2C.DataCount != -1);
}
        
/*
 * 主機接收
 * slvAddr : 從機地址,buf : 數據存放的緩沖區,len : 數據長度 
 */
void i2c_read(unsigned int slvAddr, unsigned char *buf, int len)
{
    g_tS3C24xx_I2C.Mode = RDDATA;   // 讀操作
    g_tS3C24xx_I2C.Pt   = -1;       // 索引值初始化為-1,表示第1個中斷時不接收數據(地址中斷)
    g_tS3C24xx_I2C.pData = buf;     // 保存緩沖區地址
    g_tS3C24xx_I2C.DataCount = len; // 傳輸長度
    
    IICDS        = slvAddr;
    IICSTAT      = 0xb0;    // 主機接收,啟動
    
    /* 等待直至數據傳輸完畢 */    
    while (g_tS3C24xx_I2C.DataCount != -1);
}

/*
 * I2C中斷服務程序
 * 根據剩余的數據長度選擇繼續傳輸或者結束
 */
void I2CIntHandle(void)
{
    unsigned int iicSt,i;

    // 清中斷
    SRCPND = BIT_IIC;
    INTPND = BIT_IIC;
    
    iicSt  = IICSTAT; 

    if(iicSt & 0x8){ printf("Bus arbitration failed\n\r"); }

    switch (g_tS3C24xx_I2C.Mode)
    {    
        case WRDATA:
        {
            if((g_tS3C24xx_I2C.DataCount--) == 0)
            {
                // 下面兩行用來恢復I2C操作,發出P信號
                IICSTAT = 0xd0;
                IICCON  = 0xaf;
                Delay(10000);  // 等待一段時間以便P信號已經發出
                break;    
            }

            IICDS = g_tS3C24xx_I2C.pData[g_tS3C24xx_I2C.Pt++];
            
            // 將數據寫入IICDS后,需要一段時間才能出現在SDA線上
            for (i = 0; i < 10; i++);   

            IICCON = 0xaf;      // 恢復I2C傳輸
            break;
        }

        case RDDATA:
        {
            if (g_tS3C24xx_I2C.Pt == -1)
            {
                // 這次中斷是發送I2C設備地址后發生的,沒有數據
                // 只接收一個數據時,不要發出ACK信號
                g_tS3C24xx_I2C.Pt = 0;
                if(g_tS3C24xx_I2C.DataCount == 1)
                   IICCON = 0x2f;   // 恢復I2C傳輸,開始接收數據,接收到數據時不發出ACK
                else 
                   IICCON = 0xaf;   // 恢復I2C傳輸,開始接收數據
                break;
            }
            
            if ((g_tS3C24xx_I2C.DataCount--) == 0)
            {
                g_tS3C24xx_I2C.pData[g_tS3C24xx_I2C.Pt++] = IICDS;

                // 下面兩行恢復I2C操作,發出P信號
                IICSTAT = 0x90;
                IICCON  = 0xaf;
                Delay(10000);  // 等待一段時間以便P信號已經發出
                break;    
            }      
           
           g_tS3C24xx_I2C.pData[g_tS3C24xx_I2C.Pt++] = IICDS;

           // 接收最后一個數據時,不要發出ACK信號
           if(g_tS3C24xx_I2C.DataCount == 0)
               IICCON = 0x2f;   // 恢復I2C傳輸,接收到下一數據時無ACK
           else 
               IICCON = 0xaf;   // 恢復I2C傳輸,接收到下一數據時發出ACK
           break;
        }
       
        default:
            break;      
    }
}

/*
 * 延時函數
 */
void Delay(int time)
{
    for (; time > 0; time--);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片观看| 日韩欧美精品三级| 亚洲日本一区二区三区| 韩国精品在线观看| 国产亚洲欧洲一区高清在线观看| 久久精品久久久精品美女| 91精品国产入口| 一区二区三区日本| 成人国产精品免费| 中文字幕欧美一| 成人v精品蜜桃久久一区| 中文字幕一区二区三区在线观看| 国产精品白丝av| 中国色在线观看另类| 成人黄色在线视频| 自拍偷拍亚洲欧美日韩| 色哟哟一区二区| 亚洲丰满少妇videoshd| 欧美一区二区三区视频在线观看| 日韩精品亚洲一区二区三区免费| 日韩一区二区三区电影| 日本成人超碰在线观看| 精品久久久久一区二区国产| 国产剧情在线观看一区二区| 国产精品第五页| 在线欧美一区二区| 亚洲成人激情综合网| 久久综合成人精品亚洲另类欧美| 91在线免费看| 欧美激情一区在线观看| 懂色一区二区三区免费观看| 国产精品久久久久久久久图文区 | 在线成人小视频| 免费精品视频在线| 日本一区二区三区国色天香 | 国产欧美精品在线观看| 91视频国产观看| 一区二区三区 在线观看视频| 欧美精品免费视频| 精品一区二区日韩| 18欧美乱大交hd1984| 欧洲精品视频在线观看| 国内精品久久久久影院一蜜桃| 国产精品久久久久久久久免费丝袜| 91蜜桃婷婷狠狠久久综合9色| 最新日韩av在线| 久久色成人在线| 成人激情综合网站| 亚洲午夜激情网页| 久久综合色天天久久综合图片| 成人av网站免费| 日本一区中文字幕| 国产精品久久久久久久久免费相片| 欧美区在线观看| 成人中文字幕在线| 日本免费新一区视频| 亚洲视频1区2区| 日韩视频免费直播| 99热这里都是精品| 蜜臀va亚洲va欧美va天堂| 亚洲欧美日韩国产手机在线 | 91国偷自产一区二区开放时间| 韩国女主播成人在线观看| 一区二区三区精品视频在线| 欧美国产精品一区| 91麻豆精品91久久久久久清纯| 69成人精品免费视频| 国产一区激情在线| 水野朝阳av一区二区三区| 国产精品国产成人国产三级| 精品美女在线观看| 欧美日韩一区中文字幕| k8久久久一区二区三区| 国产一区999| 日本成人超碰在线观看| 一区二区三区影院| 国产精品每日更新| 国产欧美一区二区精品忘忧草| 欧美一区二区三区视频免费播放 | 亚洲国产成人私人影院tom| 日韩午夜在线观看视频| 欧美喷水一区二区| 91久久线看在观草草青青| 成人毛片视频在线观看| 国产精品影视在线| 国产专区欧美精品| 激情五月婷婷综合| 婷婷丁香激情综合| 亚洲欧美一区二区三区国产精品| 久久久亚洲国产美女国产盗摄| 宅男在线国产精品| 欧美一区二区视频观看视频| 欧美日韩精品一区二区天天拍小说 | 久久99精品国产.久久久久久| 亚洲成人精品影院| 亚洲.国产.中文慕字在线| 一区二区日韩av| 亚洲精品乱码久久久久久黑人| 中文字幕av一区二区三区免费看| 精品粉嫩超白一线天av| 精品国产91洋老外米糕| 精品福利一二区| 亚洲国产精品黑人久久久| 欧美揉bbbbb揉bbbbb| 亚洲日本一区二区三区| 国产精品麻豆久久久| 日本一区二区久久| 国产欧美一区二区三区网站 | 亚洲最大成人网4388xx| 亚洲久本草在线中文字幕| 亚洲乱码国产乱码精品精小说 | 精品免费国产一区二区三区四区| 精品福利av导航| 国产精品伦理一区二区| 日韩理论电影院| 亚洲综合清纯丝袜自拍| 亚洲福利视频一区二区| 久久精品国产网站| 成人一区二区三区在线观看| 色国产精品一区在线观看| 91精品国产综合久久久久久漫画| 日韩一本二本av| 日韩视频免费观看高清完整版 | 国产精品夜夜爽| 成人av午夜影院| 欧美午夜片在线观看| 日韩欧美在线影院| 精品国产免费久久| 中文字幕一区三区| 亚洲精品ww久久久久久p站| 一区二区三区中文免费| 日本不卡123| www.亚洲激情.com| 69精品人人人人| 国产精品美女一区二区三区| 亚洲福利一二三区| 国产成人免费9x9x人网站视频| 色综合网色综合| 欧美tickle裸体挠脚心vk| 亚洲视频 欧洲视频| 麻豆精品新av中文字幕| 色综合天天综合网天天看片| 日韩无一区二区| 亚洲欧美一区二区三区极速播放| 奇米777欧美一区二区| 亚洲一区二区三区四区中文字幕| 日本一区中文字幕| zzijzzij亚洲日本少妇熟睡| 欧美日韩的一区二区| 国产精品丝袜久久久久久app| 午夜一区二区三区在线观看| 国产成a人亚洲| 日韩亚洲国产中文字幕欧美| 国产精品三级久久久久三级| 亚洲激情第一区| 成人免费视频app| 91精品国产综合久久香蕉麻豆| 亚洲图片激情小说| 国产精品资源在线看| 欧美无乱码久久久免费午夜一区 | 一本到一区二区三区| 欧美日韩视频在线观看一区二区三区| 欧美三级电影一区| 亚洲与欧洲av电影| 在线观看国产一区二区| 亚洲女同女同女同女同女同69| 粉嫩一区二区三区在线看| 国产精品视频免费| 国产一区二区三区av电影 | 91视频在线观看| 国产精品久久久久一区二区三区共| 国产在线播放一区二区三区| 欧美一区二区三区免费视频| 亚洲超丰满肉感bbw| 欧美日韩色一区| 日韩国产一区二| 欧美成人video| 久久99精品久久久久婷婷| 精品成a人在线观看| 国产成人在线网站| 中文字幕av一区二区三区免费看 | 狠狠色丁香久久婷婷综| 久久免费电影网| va亚洲va日韩不卡在线观看| 亚洲美女屁股眼交3| 日本一区二区动态图| 亚洲理论在线观看| 欧美日韩三级在线| 久久国产剧场电影| 国产三级精品视频| 91黄色免费网站| 三级在线观看一区二区| 欧美大片一区二区三区| 欧美一区二区成人| 秋霞午夜av一区二区三区| 久久久久九九视频| 91视频在线看| 美女在线观看视频一区二区| 国产欧美一区视频| 欧美怡红院视频|