前言
学习stm32 IIC接口的使用,用IIC 接口实现与IIC设备的通信功能。
示例详解
基于硬件平台: STM32F103C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。
本示例所用的最小系统板原理图:
关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:
系统时钟树
IIC接口配置
引脚配置(如上图右侧所示,保持默认即可)
中断配置(保持默认即可)
工程代码
在main.c 中加入如下图所示代码:
代码的功能是每隔50ms 往地址为0x54地址发送10个字节数据,但是IIC总线要求每个字节通信都要有应答或非应答信号,我们的总线上没有挂设备,且地址0X54也是随意写的,这样每次就是只能发送一个字节然后失败停止发送,通信波形如下图所示。
为了保让 stm32 IIC接口能顺利启动,推荐在i2c.c文件中加入如下代码:
为了能正常演示STM32 iic 接口功能,在IIC接口上接上 mpu6050 传感器,并在main.c 中加入如下代码:
运行程序,可以看到程序可以正常读取到MPU6050中的相关数据!
到此,操作IIC接口功能实验就完成了,下在给出一个成功的IIC通信数据波形!!
OK,本期实验完成!下期见!
关键字:STM32 基础系列教程 IIC
引用地址:
STM32 基础系列教程 14 - IIC
推荐阅读最新更新时间:2024-11-11 08:28
STM32驱动16位高精度AD TM7705/AD7705,带2.8寸TFT显示
最近在搞一个往届的电子设计大赛题目,用到AD7705就将它的程序移植到了原子的STM32F103ZET6上,供大家参考使用 制作出来的实物图如下: 2.8寸LCD显示屏界面: 硬件接线,直插原子NRF无线模块上就可以了: 单片机源程序如下: #include led.h #include delay.h #include key.h #include sys.h #include lcd.h #include usart.h #include TM7705.h #include stdio.h #include string.h #include INITUI.h //TM7705/AD7705直插正
[单片机]
STM32驱动DHT22温湿度传感器程序
#include dht22.h #include delay.h //复位DHT22 void DHT22_Rst(void) { DHT22_DQ_OUT=0; //拉低DQ delay_ms(20); //拉低至少18ms DHT22_DQ_OUT=1; //DQ=1 delay_us(30); //主机拉高20~40us } //等待DHT22的回应 //返回1:未检测到DHT22的存在 //返回0:存在 u8 DHT22_Check(void) { u8 retry=100; while ((!DHT22_DQ_IN)&&retry)//DHT2
[单片机]
Stm32 SWD 下载 调试配置
找到一篇比较好的 关于stm32 SWD模式 下载 调试 配置文章 整理如下: 我们比较常用的是Jlink下载器 ,这种下载器有一个缺点就是使用的Jtag 20PIN接口,太多的PIN会导致一些小型的PCB板很拥挤,也会增加布线的难度。 而使用SWD接口下载调试,只需要要使用4个PIN: GND, RST, SWDIO, SWDCLK ,而且下载速度可以达到10M/s,优势显而易见。 以下转自: http://www.openedv.com/posts/list/187.htm 我们所使用的Jtag 20PIN引脚图: 相关原理图: SWD 仿真模式概念简述
[单片机]
STM32基于3.5库的LED灯2
3.5的库在这里: http://www.51hei.com/mcu/2765.html #include stm32f10x.h /*********************************************************************** ************************************************************************/ GPIO_InitTypeDef GPIO_InitStructure; /*******************************************************************
[单片机]
STM32 高级定时器-PWM简单使用
高级定时器与通用定时器比较类似,下面是一个TIM1 的PWM 程序,TIM1是STM32唯一的高级定时器。共有4个通道有 死区有互补。 先是配置IO脚: GPIO_InitTypeDef GPIO_InitStructure; /* PA8设置为功能脚(PWM) */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(
[单片机]
STM32—数组作为被调用函数的入口参数时定义成指针
STM32—数组作为被调用函数的入口参数时,要两个条件, 1:数组首地址 2:数组长度 在被调用函数中,比如把数据保存到数组pbuffer 中,那么在入口参数定义时要定义成指针u8 *pbuffer, 1 而在调用时,比如要保存到tab 中,要在入口参数处强制转换成(u8 *)tab,
[单片机]
案例分享:KST3420 和 KST3220用ST 的 FlightSenseToF传感器和STM32快速开发原型
案例分享:KST3420 和 KST3220用ST 的 FlightSenseToF传感器和STM32快速开发原型 KST3420 和 KST3220 是 ST 合作伙伴计划授权成员 KS Technologies(又称 KST)公司开发的测距传感器,也是 ST 飞行时间传感器的一个应用研究案例。在过去的四年里,这家产品制造和工程服务公司在多个国家部署了数千个各种用途的测距传感器。例如,有些传感器用于监测主题公园垃圾箱满溢度,从而优化垃圾收集效率;还有一些则用于农场或智慧城市。此外,许多工程师还会对 KST3420 和 KST3220 的45 天原型开发周期给予好评,因为大多数原型开发通常需要几个月甚至几年的时间
[传感器]
STM32的结构和启动模式
一、STM32F10x功能模块 32位的Cortex-M3微处理器; 可嵌套的向量中断控制器(NVIC)和60个可屏蔽中断且有16个可编程优先级; 内嵌内存: FLASH:最大512K字节 STAM:最大64K字节 扩展内存接口(FSMC): 支持NAND、SRAM、NOR、PC Card和其他内存设备; 2个DMA,共有12个通道; SDIO: 支持SD、SDIO、MMC和CE-ATA卡; 硬件CRC; 带有电压调节器且具有多种低功耗模式: 电压范围:2V~3.6V; 4中带自动唤醒的低功耗模式; 具有上电/掉电复位和可编程电压检测功能; 带84个字节寄存器的备份区域; 使用带时钟安全系统的时钟控制模块进行频率管理和监控,频率最
[单片机]