• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: stm32f  m24m02  iic  i2c  

资源简介

基于STM32F103的24m02芯片驱动代码,使用软件iic协议,实现数据存储及读取

资源截图

代码片段和文件信息

#include “bsp_iic.h“
#include “bsp_SysTick.h“
#include 

 /******************************************************************************
  * @file    bsp_iic.c
  * @author  Tanch
  * @version V1.0.0
  * @date    03/10/2019
  * @brief   软件IIC
  ******************************************************************************/
  
  
  
 /******************************************************************************
  * @name:  IIC_Start
  * @param: none
  * @note:  IIC启动信号
  * @retval:none
  ******************************************************************************/
void IIC_Start(void)
{
SDA_OUT();
M24M02_SDA(1);
M24M02_SCL(1);
Delay_us(4);
M24M02_SDA(0);
Delay_us(4);
M24M02_SCL(0);
Delay_us(4);
}

 /******************************************************************************
  * @name:  IIC_Stop
  * @param: none
  * @note:  IIC停止信号
  * @retval:none
  ******************************************************************************/
void IIC_Stop(void)
{
SDA_OUT();
M24M02_SDA(0);
M24M02_SCL(0);
Delay_us(4);
M24M02_SCL(1);
M24M02_SDA(1);
Delay_us(4);
}

 /******************************************************************************
  * @name:  IIC_WaitAck
  * @param: none
  * @note:  IIC等待响应
  * @retval:0-正确应答 1-无器件响应
  ******************************************************************************/
uint8_t IIC_WaitAck(void)
{
uint8_t ucErrTime = 0;
M24M02_SDA(1);
SDA_IN();

Delay_us(1);
M24M02_SCL(1);
Delay_us(1);
while(READ_SDA_IN_STATE)
{
ucErrTime++;
if( ucErrTime > 250)
{
IIC_Stop();
printf(“Nack\r\n“);
return 1;
}
}
M24M02_SCL(0);
Delay_us(4);
return 0;
}

/******************************************************************************
  * @name:  IIC_Ack
  * @param: none
  * @note:  产生一个IIC ARC信号
  * @retval:none
  ******************************************************************************/
static void IIC_Ack(void)
{
M24M02_SCL(0);
SDA_OUT();
M24M02_SDA(0);

Delay_us(2);
M24M02_SCL(1);
Delay_us(2);
M24M02_SCL(0);
}

/******************************************************************************
  * @name:  IIC_NAck
  * @param: none
  * @note:  不产生IIC ARC信号
  * @retval:none
  ******************************************************************************/
static void IIC_NAck(void)
{
M24M02_SCL(0);
SDA_OUT();
M24M02_SDA(1);
Delay_us(2);
M24M02_SCL(1);
Delay_us(2);
M24M02_SCL(0);
}
/******************************************************************************
  * @name:  IIC_Send_Byte
  * @param: dat:要发送的8bit数据
  * @note:  IIC发送数据
  * @retval:none
  ******************************************************************************/
void IIC_Send_Byte(unsigned char dat)
{
uint8_t t;
SDA_OUT();
M24M02_SCL(0);
for(t=0;t<8;t++)
{
if( (dat&0x80)>>7 ){
M24M02_SDA(1);
}
else 
{
M24M02_SDA(0);
}
dat <<= 1;
Delay_us(2);
M

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1191  2019-03-19 12:38  bsp_iic.h
     文件        4357  2019-03-19 12:40  m24m02.c
     文件         762  2019-03-19 12:40  m24m02.h
     文件        4418  2019-03-19 12:38  bsp_iic.c

评论

共有 条评论