资源简介
基于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
- 上一篇:基于STM32的DAC7562模块驱动代码
- 下一篇:五子棋 Linux make
相关资源
- 官方Keil.STM32F4xx_DFP.2.9.0.pack固件库
- stm32f407使用MQ7检测一氧化碳浓度程序
- stm32f407使用继电器程序
- LQFP48-STM32F103Cx封装
- STM32F1系列读写内部FLASH
- STM32F1系列ADC DMA读取例程
- STM32F103C8T6-ADC例程
- STM32F103驱动DS18B20程序
- 0.96英寸oled屏iic通讯中文说明.doc
- STM32 硬件IIC读取BH1750
- C51双机模拟IIC通信源代码.rar
- STM32HAL库驱动SPILCD代码
- STM32F103RBT6系统原理图
- Keil.STM32F4xx_DFP.2.5.0.pack
- RC522 STM32F103C8 库函数 可任意修改
- stm32f10x_conf.h
- 51单片机模拟IIC协议读写EEPROM(24C02)
- AD9使用的STM32F103ZET6原理图库与封装库
- STM32F429 USART使用DMA方式收发数据.rar
- STM32F407VGT6芯片管脚功能定义
- NRF24L01的STM32测试程序
- Keil5下的STM32F103Cx例程超值,含PWM输出
- 基于STM32F030的PCM5242 miniDSP驱动配置
- STM32F3使用ADC转换DMA模式传输数据
- MAX44009驱动STM32F4源码
- STM32F407单片机OV7670无FIFO Ycrcb颜色空间
- 超声波和红外避障蓝牙小车完整文件
- stm32f103c8t6增强版原理图
- zw_STMicroelectronicsSTM32F4.zip
- 基于stm32f103频率测量.zip
评论
共有 条评论