资源简介
基于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
相关资源
- 基于STM32F4x9的LCD显示
- VS1053B编解码器的VDR分布式声音采集卡
- stm32f103.SchDoc
- STM32F103 USART+DMA
- stm32f105-usart-DMA收发demo
- STM32F042F6P6 Uart12DMA;发送中断接收
- 基于STM32F103C8单片机的晶联讯电子JL
- stm32F4+w5300
- STM32F103实现OV7670摄像头显示
- STM32F207学习板例程
- STM32F103VCT6TR - High-density performance lin
- stm32f103 虚拟U盘,调试成功的
- 基于stm32F103vct6的SD卡FATFS文件系统移植
- STM32F030从机中断接收的iic代码,附带
- FreeModbus_Slave+STM32F407+USART2代码亲测可
- STM32F103启动文件HD;MD
- STM32F407 串口配置 串口1~6 六串口同时
- STM32F407_6个串口同时使用的代码
- STM32 自带内部FLASH 读写
- STM32F407实时时钟_DS1302实时时钟模块和
- 基于STM32F103的实时时钟程序,采用D
- STM32F072xx数据手册
- STM32F429内部FLASH读写程序
- stm32f407读写flash的demo,基于正点原子
- STM32F2技术培训_通用定时器_TIM.pdf
- STM32F4x7_ETH_LwIP_V1.0.0
- STM32F103系列PWM输出应用之纸短情长音
- STM32F030051C8T6最小系统资料
- 基于STM32F407的视频采集与传输系统设
- STM32F103移植FreeModbus实现modbus主机.zi
评论
共有 条评论