久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2151|回復(fù): 1
收起左側(cè)

STM32的IIC通訊協(xié)議示例工程AT24CXX

[復(fù)制鏈接]
ID:304877 發(fā)表于 2020-5-7 11:16 | 顯示全部樓層 |閱讀模式
說明:本例程實驗STM32F103ZET6與AT24C02通訊,初次編寫,歡迎大佬批正。
接口如下:
        SDA  PA5
        SCL   PA4
        LED   PE5
現(xiàn)象:復(fù)寫成功,PE5輸出低電平
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IIC.C
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "iic.h"
#include "sys.h"
#include "delay.h"
#define IICDELAY delay_us(10);
#define SDA_IN  sda_i();
#define SDA_OUT sda_o();
#define SDA_H    GPIOA->ODR|= (1<<5);
#define SDA_L    GPIOA->ODR&= ~(1<<5);
#define SCL_H    GPIOA->ODR|= (1<<4);
#define SCL_L    GPIOA->ODR&= ~(1<<4);
#define SDA       ((GPIOA->IDR)>>5)&0X01
//PB3 SCL    PB4 SDA
/*IIC初始化*/
void iic_init(void)
{
  RCC->APB2ENR |= 1<<2;//使能PA時鐘
GPIOA->CRL &= ~(0xff << 4*3) ;  //清除CRL第20到23位值
GPIOA->CRL |= 0x33 << 4*3;      //設(shè)置B3B4輸出  50MHZ模式
GPIOA->ODR |= (1<<5)|(1<<4);    //設(shè)置為高電平
}
/*端口輸入模式*/
void sda_i(void)
{
  GPIOA->CRL &= ~(0xf0 << 4*4) ;  //清除CRL第20到23位值
GPIOA->CRL |= 0x80 << 4*4;      //設(shè)置B3B4輸入  默認(rèn)上拉 50MHz模式
GPIOA->ODR |= (1<<5);    //設(shè)置為上拉模式
}
/*端口輸出模式*/
void sda_o(void)
{
  GPIOA->CRL &= ~(0xf0 << 4*4) ;  //清除CRL第20到23位值
GPIOA->CRL |= 0x30 << 4*4;      //設(shè)置B3B4輸出 50MHz模式
}
/*IIC起始信號*/
void iic_start(void)
{
  SDA_OUT
SCL_H
  IICDELAY
SDA_H
IICDELAY
SDA_L
IICDELAY
}
/*IIC終止信號*/
void iic_stop(void)
{
  SDA_OUT
SDA_L
  IICDELAY
SCL_H
IICDELAY
SDA_H
IICDELAY
}
/*主機發(fā)送應(yīng)答*/
void master_ack(char i)//0為不應(yīng)答
{
  SDA_OUT
  SCL_L
IICDELAY

if(i)
SDA_L
else
SDA_H

IICDELAY
  SCL_H
IICDELAY
SDA_IN
  SCL_L
}
/*檢測從機應(yīng)答*/
char test_ack(void)
{
  SDA_IN
SCL_H
IICDELAY
if(SDA)     //如果高電平   非應(yīng)答
{
SCL_L
IICDELAY
iic_stop();
return(0);
}
else        //低電平    應(yīng)答
{
SCL_L
IICDELAY
return(1);
}
}
/*發(fā)送一個字節(jié)*/
void iic_send_byte(unsigned char byte)
{
  unsigned char i;
SDA_OUT
for(i = 0;i < 8;i++)
  {
  SCL_L
  IICDELAY
   if(byte&0x80)
   SDA_H
   else
  SDA_L
  IICDELAY
  SCL_H
  IICDELAY
  byte<<=1;
}
SCL_L
IICDELAY
SDA_IN
IICDELAY
}
/*讀一個字節(jié)*/
unsigned char iic_read_byte(void)
{
  unsigned char dat,i;
SCL_L
IICDELAY
SDA_IN
IICDELAY
for(i = 0;i < 8;i ++)
{
   SCL_H
   IICDELAY
  if(SDA)
  {
    dat|=0x01;
  }
    else
  {
   dat&=0xfe;
  }
    IICDELAY
    SCL_L
    IICDELAY
  if(i < 7)
  {
   dat = dat << 1;
  }      
}
return(dat);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
AT24C02.C
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "24cxx.h"
#define AT24C02_ADDR 0xa0
/*AT24C02初始化*/
void AT24CXX_init(void)
{
iic_init();
}
/*發(fā)送數(shù)據(jù)*/
unsigned char AT24CXX_TransmitData(unsigned char ADDR,unsigned char DAT)
{
    iic_start();
   iic_send_byte(AT24C02_ADDR+0);
   if(!test_ack())
  {
     return(0);
  }
  iic_send_byte(ADDR);
   if(!test_ack())
  {
     return(0);
  }
  iic_send_byte(DAT);
   if(!test_ack())
  {
     return(0);
  }  
  iic_stop();
     return(1);
}
unsigned char AT24CXX_ReceiveData(unsigned char ADDR)
{
unsigned char DAT;
iic_start();
iic_send_byte(AT24C02_ADDR+0);
if (!test_ack())
{
  return(0);
}
iic_send_byte(ADDR);
master_ack(0);
iic_start();
iic_send_byte(AT24C02_ADDR+1);
if (!test_ack())
{
  return(0);
}
DAT = iic_read_byte();
master_ack(0);
iic_stop();
return(DAT);
}


IIC工程.7z

175.33 KB, 下載次數(shù): 16, 下載積分: 黑幣 -5

STM32F1程序

回復(fù)

使用道具 舉報

ID:304877 發(fā)表于 2020-5-11 06:41 來自手機 | 顯示全部樓層
已經(jīng)實驗成功
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久av | 精品国产一区二区久久 | 久久久久久av | 久久精品免费 | 在线播放中文字幕 | 亚洲精品一区二三区不卡 | 巨大荫蒂视频欧美另类大 | 天天综合网永久 | 韩日一区二区 | av手机免费在线观看 | 亚洲狠狠爱 | 99爱国产 | 国产精品99视频 | 一级毛片免费看 | 中文字幕在线观看精品 | 国产成人a亚洲精品 | 久久高潮 | 免费一级欧美在线观看视频 | 亚洲人在线 | 九九在线精品视频 | 日本亚洲欧美 | 天堂中文av | 国产精品一区二区无线 | 国产精品激情小视频 | 久久久久久国产精品 | 欧美 日韩 国产 成人 在线 91 | 日韩一区二区三区在线播放 | av一区二区三区在线观看 | 国产精品久久久久久久久久三级 | 91麻豆精品国产91久久久资源速度 | 激情小说综合网 | 国产在线视频一区二区董小宛性色 | 一区二区三区视频播放 | 欧美一级片在线观看 | 日韩久久久久 | 免费午夜视频在线观看 | 亚洲精品乱码久久久久久按摩观 | 一区二区三区四区在线 | 国产91在线观看 | 国产视频一区在线 | 亚洲精品福利视频 |