基于华清远见STM32f051的 IIC从模式实现方法

作者:卢老师,华清远见嵌入式学院讲师。

在大多情况下,我们使用MCU控制传感器,节点以及相关从设备,但在较为复杂的系统中,有时候也会使用MCU做为从设备。

下面是关于stm32f051的从模式实现方法,主要思路为从设备从中断里面接受 IIC主设备发送的数据,并加以处理。

下图为STM32F051的最小系统:

IIC从模式 GPIO的配置

根据原理图查ST32F051的datasheet

配置引脚:

void I2C_GPIO_Configuration(void)
        {
                GPIO_InitTypeDefGPIO_InitStruct;
        
                /* Enable GPIOA clock */
                RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
                /*!< sEE_I2C Periph clock enable */
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 , ENABLE);
                /*!< GPIO configuration */
                /*!< Configure sEE_I2C pins: SCL */
                GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
                GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;//GPIO_Mode_IN
                GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;
                GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;//open-drain
                GPIO_Init(GPIOB , &GPIO_InitStruct);
        
                /*!< Configure sEE_I2C pins: SDA */
                GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
                GPIO_Init(GPIOB , &GPIO_InitStruct);
        
                /* Connect PXx to I2C_SCL*/
                GPIO_PinAFConfig( GPIOB , GPIO_PinSource8, GPIO_AF_1);
                /* Connect PXx to I2C_SDA*/
                GPIO_PinAFConfig( GPIOB ,GPIO_PinSource9, GPIO_AF_1);
        }

IIC从模式配置,在配置时,需要设置地址,在这里设置为0XA0,而从设备的时钟属于被动模式,有IIC的主端确定。

void I2C_Configuration(void)
        {
                I2C_InitTypeDef I2C_InitStruct;
        
                /* I2C configuration */
                I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;
                I2C_InitStruct.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
                I2C_InitStruct.I2C_DigitalFilter = 0x00;
                I2C_InitStruct.I2C_OwnAddress1 =0xA0;
                I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;
                I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
                I2C_InitStruct.I2C_Timing = 0xb0420f13;//100Kbits
                /* I2C Peripheral Enable */
                I2C_Cmd(I2C1, ENABLE);
                /* Apply I2C configuration after enabling it */
                I2C_Init(I2C1, &I2C_InitStruct);
        }

下面是IIC中断函数的实现

void I2C1_IRQHandler(void)
        {
                I2C_ClearITPendingBit(I2C1, I2C_ISR_ADDR|I2C_ISR_STOPF );
                if(I2C_GetITStatus( I2C1, I2C_IT_RXNE));
                {
                        I2Cbuf[I2C_IT_FLAG++]=I2C_ReceiveData(I2C1);
                }
        }

中断函数里面,清中断为2种,一种为IIC从地址校验成功,一种是数据传输过程中停止。对于从设备,接受数据中断才是我们最需要的,这里我们将IIC接受的数据存入定义好的数组中,这样以备后用,同是,在读取接受数据时,硬件已经将接受数据的中断清楚掉。

文章来源:华清远见嵌入式学院原文地址:http://www.embedu.org/Column/Column912.htm

更多相关嵌入式免费资料查看华清远见讲师博文>>

时间: 2024-08-01 18:32:14

基于华清远见STM32f051的 IIC从模式实现方法的相关文章

热烈祝贺华清远见《ARM处理器开发详解》第2版正式出版

2014年6月,由华清远见研发中心组织多名业 内顶尖讲师编写的<ARM处理器开发详解>一书正式出版.本书以S5PV210处理器为平台,详细介绍了嵌入式系统开发的各个主要环节,并注重实践,辅以 代码讲解,从分析的角度来讲解嵌入式开发的各种技术,将嵌入式软.硬件理论和嵌入式实验实践融合在一起. 华清远见作为国内最早推出嵌入式培训的机构,到 目前为止教学采用的实验平台.图书.课件全部来自自主研发,成为业内唯一公开连续出版图书的培训机构.这次最新出版的<ARM处理器开发详解>同样秉承了 华

热烈庆祝华清远见2014嵌入式系统(Linux&amp;Android)开发就业培训课程全面升级

近日,华清远见公开宣布:2014嵌入式系统 (Linux&Android)开发就业培训课程再次升级!据悉,华清远见如今已经持续10年,一直保持课程每年2次的更新的频率.华清远见的每 次课程更新都能够带给行业一些新的思路和方向,这次也不例外.通过知情人,我们了解到华清远见此次针对嵌入式培训和Anrdoid培训两个方向均有重大变 革. 首先,华清远见嵌入式系统 (Linux&Android)开发就业培训课程升级后主课程中全面采用自主研发的Cortex-A9 四核ARM硬件平台.这也是目前在嵌入

[华清远见]FPGA公益培训

本套视频教程为华清远见第四期大型网络公益培训活动,主讲人:姚远老师,华清远见高级讲师. “红色飓风FPGA普及行动 II” 课程内容: 第1讲:FPGA系统设计基础 第2讲:从零开始设计FPGA最小系统一: 核心电路 第3讲:从零开始设计FPGA最小系统二: 外围电路 第4讲:Verilog HDL语法一:常用语句 第5讲:Verilog HDL语法二:任务与函数 第6讲:Verilog HDL语法三:有限状态机 第7讲:QuartusII 7.2设计入门 第8讲:NIOSII 7.2 设计入门

嵌入式19021期扬帆起航,华清圆你开发梦

又是一年春草绿,新开始,新起点.带着憧憬和向往,怀着梦想与期盼,嵌入式19021期的学员们走进西安华清远见,开启四个月的开发深造,迎接新的开始与挑战.3月11日,开班典礼正式开始,典礼由班主任李老师主持. 君子治学,志存高远,同学们在追求知识与技能的基础上,更要注重团队协作,学以致用,不断完善自我.5G时代的到来,使得嵌入式的发展前景更加美好,校企合作王经理语重心长的为学员们送上新开班的期盼与希冀,并从行业发展的角度给学员们分析了大家选择嵌入式行业的正确性. 大鹏一日同风起,扶摇直上九万里 在学

过情人节之前,先看看华清的元宵节是怎么过的?貌似很热闹的样子哦

2017年的2月10日,离元宵节只有24小时,而1610期H5班的毕业季也在元宵节这一天.每逢佳节泪洒尽,却不知我华清学子思乡情. 班主任陈老师为了1610期学员们能够感受到华清大家庭的温暖,特意组织大家在元宵节聚餐.一是用美食来弥补大家的孤单和寂寞,二是让他大家懂得互帮互助珍惜四个月的同学情.学员们听到吃,顿时就沸腾起来犹如打了鸡血般欢呼跳跃. [且行且珍惜] 千年共修一面缘,且行且珍惜.四个月的寒窗苦读,从一脸懵懂到得心应手.从沉默不语到谈笑风生,一件件生活小事,一幕幕学习互助,现在回忆起来

2016华清学子生活真精彩,让人“垂涎欲滴”

2016年的华清,忙碌而充实,就像同学们紧张的学习,马不停蹄.这一年里,华清为丰富学员们的课余生活,举办了节日庆祝.户外游玩.智力竞赛.新老学员交流会.人气讲师评选等一系列大大小小的活动,为小伙伴们在华清的生活增添了许多亮色. 别啃瓜啦!带上瓜子儿.饮料.小板凳儿,跟华妹一起来看看这一年里,华清上演的精彩活动吧! 一.每一个重要节日,我们一起欢度--共度佳节 端午节.中秋节.圣诞节.元旦--你在意的每一个重要的节日,华清自然不会缺席.浓浓的节日氛围里,送上精心准备的礼物,你是否还满意?让身处华清

跟着飞凌嵌入式一起参观华清实战项目研发基地

为了深化校企合作,增进校企了解,飞凌嵌入式北京中心梁经理.产品研发部杨经理和市场部栾经理在研发中心老师带领下,参观了华清学员项目研发基地.参观期间,“星创客”精英班产品经理秦老师,对学员项目教学做了详细介绍,双方对嵌入式研发项目做了深入交流. 参观期间,北京中心梁经理询问了学生实习的很多细节.在梁经理和秦老师的一问一答中,企业对华清远见的项目实训及研发实力有了更深入的了解. 问:“学员项目教学时,这些项目都要参与研发吗?” 答:“项目教学期间,我们会跟根据学员的选择,参与其中一项或几项研发,采用

基于Qt有限状态机人工智能的一种实现及改进方法

基于Qt有限状态机人工智能的一种实现及改进方法 人工智能在今年是一个非常火的方向,当然了,不仅仅是今年,它一直火了很多年,有关人工智能的一些算法层出不穷.人工智能在很多领域都有应用,就拿我熟悉的游戏领域来说吧,一些寻路算法,比如说A*算法(我的<十日驱鬼记>就曾经使用了A*算法进行寻路),还有一些高级的算法,比如说决策树等,都在游戏中得以了广泛的应用.我目前想制作的项目和人工智能也有一定的关系,因此,我这个月开始学习搭建一些简单的人工智能框架. 蒋彩阳原创文章,首发地址:http://blog

基于人工分析的HTTP-POST请求报文特征获取一般方法

基于人工分析的HTTP-POST请求报文特征获取一般方法 (以百度贴吧客户端发帖行为分析为例) 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 现有的HTTP-POST请求报文信息还原工具都是基于特征(包括网络应用的行为识别特征与信息提取特征)的,而特征的获取往往依赖于人工分析.在分析的过程中往往需要用到一些能帮助完成网络数据采集和分析功能的工具.根据网络环境的不同,可能用到的几款工具包括: Tcpdump(Unix/Li