资源简介
基于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
相关资源
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- stm32f407上的两个can发送和接收例程
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- STM32F103 串口程序(完整版)
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32F103 CC2500完整驱动(模拟SPI)
- SX1280.rar
- STM32 DS3231驱动.zip
- IIC proteus仿真实验
- STM32F103C8T6+NRF24l01无线通信
- 基于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文件系统移植
评论
共有 条评论