stm32-iic 时序驱动

这篇具有很好参考价值的文章主要介绍了stm32-iic 时序驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

stm32-iic 时序驱动,stm32,单片机,嵌入式硬件

stm32-iic 时序驱动,stm32,单片机,嵌入式硬件
stm32-iic 时序驱动,stm32,单片机,嵌入式硬件
stm32-iic 时序驱动,stm32,单片机,嵌入式硬件
stm32-iic 时序驱动,stm32,单片机,嵌入式硬件
数据发送
stm32-iic 时序驱动,stm32,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-520388.html

#include "IIC.h"
#include "delay.h"

void IIC_Init(void){

	GPIO_InitTypeDef  GPIO_InitStruct;
	//使能GPIPF
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

	//初始GPIGB8 GPIGB9 
	GPIO_InitStruct.GPIO_Pin	= GPIO_Pin_8 | GPIO_Pin_9; 	 //引脚9
	GPIO_InitStruct.GPIO_Mode	= GPIO_Mode_OUT; //输出
	GPIO_InitStruct.GPIO_OType	= GPIO_OType_OD; //开漏输出
	GPIO_InitStruct.GPIO_Speed	= GPIO_Speed_50MHz; //速度
	GPIO_InitStruct.GPIO_PuPd	= GPIO_PuPd_UP;   //上拉
	
	GPIO_Init(GPIOB,&GPIO_InitStruct);
	
	//初始化总线->空闲状态
	SDA_OUTPUT();
	SCL = 1;
	SDA_OUT = 1;
	
}
	

void IIC_Start(void){

	//输出模式
	SDA_OUTPUT();
	
	//1.总线空闲
	SDA_OUT = 1;
	SCL = 1;
	delay_us(5);
	
	//2.SDA电平跳变	H -> L
	SDA_OUT = 0;
	delay_us(5);
	
	//3.占据时钟总线
	SCL = 0;
	
}


void IIC_Stop(void){

	//输出模式
	SDA_OUTPUT();
	
	//1.钳住总线同时SDA为零
	SDA_OUT = 0;
	SCL = 0;
	delay_us(5);
	
	//2.SCL、SDA电平跳变 L ->	H
	SCL = 1;
	SDA_OUT = 1;
	delay_us(5);

}
		
void IIC_Write_Byte(u8 data){

	int i = 7;
	//输出模式
	SDA_OUTPUT();
	
	
	//一个字节八位,循环八次
	SCL = 0;
	for(; i >= 0; i--){
		
		SCL = 0;
		//判断当前数据位:高位在前、低位在后
		if((data & (1<<i))){
		
			SDA_OUT = 1;
		}
		else{
		
			SDA_OUT = 0;
		}
		delay_us(5);	//此处不知道为什么要延时 1.构成脉冲周期
		SCL = 1;
		delay_us(5);
		
		//3.钳住总线
		SCL = 0;	
	}

	//3.占据时钟总线,释放数据总线
	SCL = 0;
	SDA_OUT	= 1;
}
	
u8	IIC_Read_Byte(void){

	u8 data = 0;
	int i = 7;
	
	//输入模式
	SDA_INPUT();
	
	//一个字节八位,循环八次
	SCL = 0;
	for(; i >= 0; i--){
		
		//低电平准备数据
		delay_us(5);
		
		//判断当前数据位:高位在前、低位在后
		SCL = 1;
		if(SDA_IN){
		
			data |= (1 << i);
		}
		delay_us(5);
		
		//3.钳住总线
		SCL = 0;	
	}

	//4.占据时钟总线,释放数据总线
	SCL = 0;
	SDA_OUT	= 1;
	return data;
}
	
	
u8	IIC_Wait_Ack(void){

	u8 ask = 0;
	
	//输入模式
	SDA_INPUT();

	//1.准备ask
	SCL = 0;
	delay_us(5);
	
	//2.读取ASK
	SCL = 1;
	if(SDA_IN == 1){
		ask = 1;
	}
	else ask = 0;
	delay_us(5);
	
	//3.占据时钟总线,释放数据总线
	SCL = 0;
	SDA_OUT	= 1;
	return ask;
	
	
}
	
void IIC_Send_Ack(void){

	//输出模式
	SDA_OUTPUT();
	
	//1.准备数据
	SCL = 0;
	SDA_OUT = 0;
	delay_us(5);	
	
	//2.发送ASK
	SCL = 1;
	delay_us(10);
	
	//3.占据时钟总线,释放数据总线
	SCL = 0;
	SDA_OUT	= 1;

}
	
	
	
void IIC_Send_NAck(void){

	//输出模式
	SDA_OUTPUT();
	
	//1.准备数据
	SCL = 0;
	SDA_OUT = 1;
	delay_us(5);	
	
	//2.发送NASK
	SCL = 1;
	delay_us(5);
	
	//3.占据时钟总线,释放数据总线
	SCL = 0;
	SDA_OUT	= 1;
}

到了这里,关于stm32-iic 时序驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(44)
  • 单片机STM32看门狗详解(嵌入式学习)

    单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。 STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立

    2024年02月13日
    浏览(19)
  • 【单片机毕设选题】Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(27)
  • 单片机项目分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(37)
  • 【单片机毕设选题】 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(25)
  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(29)
  • stm32毕设分享 stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(37)
  • stm32毕设分享 Stm32酒驾检查系统 - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月23日
    浏览(29)
  • 嵌入式STM32 单片机 GPIO 的工作原理详解

    STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为

    2024年02月20日
    浏览(28)
  • 单片机毕设分享 基于STM32单片机的老人防摔倒报警系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包