娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年11月09日(星期六)

正在發(fā)生

2019年11月09日 | I2C總線淺談之(四)--STM8的IIC驅(qū)動文件示例

發(fā)布者:平章大人 來源: eefocus關(guān)鍵字:I2C總線  STM8  IIC驅(qū)動 手機看文章 掃描二維碼
隨時隨地手機看文章

本示例提供STM8S103F核心板的IIC驅(qū)動文件源代碼,親測沒有任何問題,博主使用來驅(qū)動AT24C256和電子羅盤MMC5883MA,IIC通信速率100kHz,可以調(diào)整時序延時時間。


直接貼源碼:


IIC.h


#ifndef _IIC_H

#define _IIC_H

 

#include "iostm8s103F3.h"

#include "type_def.h"

 

#define IIC_SCL          PC_ODR_ODR5           //設(shè)置SCL為GPIO--PC5

#define IIC_SDA          PC_ODR_ODR6           //設(shè)置SDA為GPIO--PC6

#define READ_SDA         PC_IDR_IDR6   //PC6引腳為輸入寄存器

#define SET_SCL_OUT()    {PC_DDR_DDR5=1; PC_CR1_C15 = 1; PC_CR2_C25 = 0;}//設(shè)置SCL引腳為推挽輸出模式

#define SET_SDA_OUT()    {PC_DDR_DDR6=1; PC_CR1_C16 = 1; PC_CR2_C26 = 0;}//設(shè)置SDA引腳為推挽輸出模式

#define SET_SDA_IN()     {PC_DDR_DDR6=0; PC_CR1_C16 = 0; PC_CR2_C26 = 0;}//設(shè)置SDA引腳為輸入模式

 

//IIC所有操作函數(shù)

void IIC_Init(void);                 //初始化IIC的IO口  

void IIC_Start(void); //發(fā)送IIC開始信號

void IIC_Stop(void);   //發(fā)送IIC停止信號

void IIC_Send_Byte(unsigned char txd); //IIC發(fā)送一個字節(jié)

uint8_t IIC_Read_Byte(unsigned char ack); //IIC讀取一個字節(jié)

uint8_t IIC_Wait_Ack(void); //IIC等待ACK信號

void IIC_Ack(void); //IIC發(fā)送ACK信號

void IIC_Nack(void); //IIC不發(fā)送ACK信號

 

#endif



IIC.c


#include "IIC.h"

#include "delay.h"

 

//初始化IIC

void IIC_Init(void)

{

    SET_SCL_OUT();//設(shè)置SCL引腳為推挽輸出模式

    SET_SDA_OUT();//設(shè)置SDA引腳為推挽輸出模式

IIC_SCL = 1;//IIC總線SDA與SCL同時置高,總線為空閑狀態(tài)

IIC_SDA = 1;

}

 

//產(chǎn)生IIC起始信號

void IIC_Start(void)

{

SET_SDA_OUT();//設(shè)置SDA引腳為推挽輸出模式

IIC_SDA = 1;//開始前IIC總線SDA與SCL同時置高,總線為空閑狀態(tài),做通信準備    

IIC_SCL = 1;

delay_4us();

  IIC_SDA = 0;//在SCL為高期間,SDA由高到低的跳變,啟動信號發(fā)出

delay_4us();

IIC_SCL = 0;//SCL拉低鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù) 

delay_2us();

}

 

//產(chǎn)生IIC停止信號

void IIC_Stop(void)

{

SET_SDA_OUT();//設(shè)置SDA引腳為推挽輸出模式

IIC_SCL = 0;//通信結(jié)束,SCL,SDA都為低。

IIC_SDA = 0;

  delay_4us();

IIC_SCL = 1;//將SCL置高,當SCL為高期間,SDA由低到高的跳變

IIC_SDA = 1;//發(fā)送I2C總線結(jié)束信號

delay_4us();  

}

//等待應(yīng)答信號到來

//返回值:1,接收應(yīng)答失敗

//        0,接收應(yīng)答成功

uint8_t IIC_Wait_Ack(void)

{

uint8_t ucErrTime = 0;

IIC_SDA = 1;

    delay_us();

IIC_SCL = 1;

    delay_us();

SET_SDA_IN();//SDA設(shè)置為輸入

delay_us();

while(READ_SDA)

{

ucErrTime++;

if(ucErrTime>250)

{

IIC_Stop();

return 1;

}

}

IIC_SCL=0;//時鐘SCL輸出0   

return 0;  

//產(chǎn)生ACK應(yīng)答

void IIC_Ack(void)

{

IIC_SCL = 0;

SET_SDA_OUT();

IIC_SDA = 0;

delay_2us();

IIC_SCL = 1;

delay_2us();

IIC_SCL = 0;

}

//不產(chǎn)生ACK應(yīng)答    

void IIC_Nack(void)

{

IIC_SCL = 0;

SET_SDA_OUT();

IIC_SDA = 1;

delay_2us();

IIC_SCL = 1;

delay_2us();

IIC_SCL = 0;

}     

//IIC發(fā)送一個字節(jié)

//返回從機有無應(yīng)答

//1,有應(yīng)答

//0,無應(yīng)答  

void IIC_Send_Byte(uint8_t txd)

{                        

    uint8_t t;   

SET_SDA_OUT(); //設(shè)置SDA引腳為推挽輸出模式    

    IIC_SCL = 0;//拉低時鐘SCL開始數(shù)據(jù)傳輸

    for(t=0;t<8;t++)

    {   

        if((txd & 0x80) >> 7)//發(fā)送最高位

        {

            IIC_SDA = 1;

        }

        else

        {

            IIC_SDA = 0;

        }

 

        txd <<= 1; //移位處理  

delay_2us();//對特殊IC這三個延時都是必須的//6us,頻率166khz

IIC_SCL = 1;

delay_2us(); 

IIC_SCL = 0;

delay_2us();

    }  

}    

//讀1個字節(jié),ack=1時,發(fā)送ACK,ack=0,發(fā)送nACK   

uint8_t IIC_Read_Byte(unsigned char ack)

{

unsigned char i,receive=0;

SET_SDA_IN();//SDA設(shè)置為輸入

    for(i = 0;i < 8;i++ )

{

        IIC_SCL = 0; 

        delay_2us();

IIC_SCL = 1;

        receive<<=1;

        if(READ_SDA)

        {

            receive++; 

        }

delay_us(); 

    }  

    if (!ack)

    {

        IIC_Nack();//發(fā)送nACK

    }

    else

    {

        IIC_Ack(); //發(fā)送ACK 

    }

    return receive;

}


關(guān)鍵字:I2C總線  STM8  IIC驅(qū)動 引用地址:I2C總線淺談之(四)--STM8的IIC驅(qū)動文件示例

上一篇:STM8硬件I2C配置
下一篇:STM8S_010_I2C讀寫EEPROM(硬件方式)

推薦閱讀

  2017年年末,國家能源局、國務(wù)院扶貧辦聯(lián)合發(fā)布了《關(guān)于下達“十三五”第一批光伏扶貧項目計劃的通知》,并正式下發(fā)“十三五”第一批光伏扶貧項目,作為國家級貧困縣的山西省代縣便出現(xiàn)在首批扶貧名單之中。“十三五”第一批光伏扶貧項目計劃顯示,代縣建檔立卡貧困村236個,幫扶戶數(shù)6483個,計劃建設(shè)光伏電站數(shù)量217座,建設(shè)規(guī)模達42.8MW。?  代縣...
單片機源程序如下:#include "Main.h"SIGNAL(SIG_OVERFLOW0) //中斷每1秒發(fā)一個數(shù){ TCNT0 = 200; TIMSK &= ~_BV(TOIE0); //TIMSK中TOIE0置0 if(++g_bCount>1) { g_bCount = 0; TaskInTimer(); } ...
11月9日訊,衢州中天東方氟硅材料有限公司于2020年11月9日11時25分左右突然發(fā)生火災(zāi)事故。事故發(fā)生后,市消防、應(yīng)急、環(huán)保等部門單位迅速趕往現(xiàn)場進行應(yīng)急救援和環(huán)境監(jiān)測工作,通知企業(yè)人員及周邊人員進行疏散。截至目前為止,暫無人員傷亡及被困情況。
net_device_ops中方法的相應(yīng)說明/* * This structure defines the management hooks for network devices. * The following hooks can be defined; unless noted otherwise, they are * optional and can be filled with a null pointer. * * int (*ndo_init)(struct net_device *dev); * This function is cal...

史海拾趣

小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 凤凰县| 庐江县| 黄骅市| 高安市| 永丰县| 子长县| 银川市| 启东市| 临邑县| 赤峰市| 和静县| 丹阳市| 九江市| 邵东县| 高密市| 林甸县| 淳化县| 将乐县| 商城县| 贺兰县| 积石山| 洮南市| 许昌县| 灵宝市| 平阳县| 江永县| 龙川县| 辰溪县| 东辽县| 汾西县| 佛教| 玛多县| 哈密市| 仁怀市| 陆川县| 南召县| 芜湖市| 宁河县| 林周县| 赤壁市| 安图县|