历史上的今天
返回首页

历史上的今天

今天是:2025年06月27日(星期五)

正在发生

2019年06月27日 | 基于STM32的学习型通用红外遥控设备的设计实现

2019-06-27 来源:eefocus

CPU: STM32

调试平台: STM32F103ZET和STM32F103VBT

软件平台: Keil uVision4

电路设计: Altium Designer v6.9


二、学习型红外遥控设备的各个模块实现

2.4 红外脉宽存储及FLASH的读写

根据STM32型号的不同,FLASH容量由16K到1024K不等。

FLASH模块主要由三部分组成:主存储器、信息块、闪存存储器接口寄存器。FLASH模块组织:

详细内容见《STM32中文参考手册》小节《2.3.3 嵌入式闪存》。


主存储器用来存放代码和数据常数,对于大容量产品,划分为256页,每页2K字节;中小容量产品每页则是1K。信息块的启动程序代码用来存储ST自带的启动程序,用于串口下载,用户选择字节一般用来配置写保护、读保护。闪存存储器接口寄存器是整个闪存模块的控制机构,控制闪存的读写。

FLASH可以在通用地址空间直接寻址,任意32位数据的读操作都能访问FLASH内容,得到相应数据。FLASH的最快访问速度≤24MHz,如果CPU频率超过24MHz,必须加入等待时间。对于72MHz的主频,FLASH的等待周期必须设置为2。

FLASH的编程和擦除。STM32的FLASH编程由FPEC模块操作,在系统复位后,FPEC模块会被保护起来,不能写入。只有写入特定的序列到FLASH_KEYR寄存器打开FPEC模块解除写保护后才能操作相关寄存器。

注意:STM32闪存编程每次必须写入16位的数据,且要求写入地址的FLASH已经擦除,否则写入无效。

在指定地址写入指定个数的数据,操作流程图如下图所示:

示例代码见附件。


使用硬件仿真功能测试数据的读写是否正确。在Debug模式下,单步执行写数据函数FLASH_WriteData()和读数据函数FLASH_ReadData(),写入和读出的数据如下图所示:

 

2.5 中断方式实现的学习按键

学习按键的程序用外部中断的中断线2实现。


示例代码见附件。


 

2.6 红外信号的调制发送

由于学习是对红外脉冲的完整复制,故发送只需把FLASH里的红外数据取出调制到载波上发送出去即可,实现流程图如下图所示:


示例代码如下:

 /**

 * SendPort_Init(void) 红外发送端口控制初始化

 */

void SendPort_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

/** 使能PD端口时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

/** 使能PD端口配置 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_2 |GPIO_Pin_3;  //LED0-->PF6~~~PF10 端口配置

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_SetBits(GPIOC, GPIO_Pin_0 |GPIO_Pin_1 |GPIO_Pin_2); // PD0~~~PD2输出高

GPIO_ResetBits(GPIOD, GPIO_Pin_3); // 注意!!!!!!!!!!!!

}


/**

 * 示波器接收的键码  52:  0101 0010

 * 单片机接收的键码  4A:  0100 1010

 * 发送的键码  4A:  0100 1010

 * 验证平台: 长虹电视机、单片机

 * 验证通过: 电视机可接收

 */

u16 sendCode[200] = {0};

void IR_SendData(u32 SendAddr)

{

u8 i;

#if 0

u16 sendCode[200] = {0};

// 已通过验证

for(i=0; i<199; i++){

sendCode[i] = PulseTab[i];

}

#endif

FLASH_ReadData(SendAddr,sendCode,200); // 从相应FLASH地址取出数据

for (i=0; i<100; i++) {

if ((sendCode[2*i]!=0) && (sendCode[2*i+1]!=0)) {

IR_SEND = 0;

delay_us(sendCode[2*i]);

IR_SEND = 1;

delay_us(sendCode[2*i+1]);

}

}

// IR_SEND = 0;

/** 下面两句及其重要,否则出错!!! */

// delay_us(555);

IR_SEND = 1;

}

遥控器减号键如下图所示:


2.7 TFT显示模块

TFT是Thin Film Transistor(薄膜场效应晶体管)的简称,这种液晶显示器上的每一像素点都由集成在后面的薄膜场效应晶体管驱动。故而这种显示器速度快、亮度高、对比度高,分辨率也较其他类型的液晶显示器高。

TFT液晶的驱动时序如下图所示:

 


3 整个系统

整个系统完整的程序见附件(为减小文件,删除了一些编译时产生的文件,故工程需要重新编译)  


系统实物图

参考文献

[1] 廖义奎编著. Cortex-M3之STM32嵌入式系统设计. 北京: 中国电力出版社,2012.


[2] 张彬杰. 22个元件做出学习型遥控器[J]. 无线电, 2010(08):79-82.


[3] 意法半导体(中国)投资有限公司. STM32中文参考手册. 2010.


推荐阅读

史海拾趣

格科微电子(GALAXYCORE)公司的发展小趣事

格科微电子(GALAXYCORE)公司的发展故事

故事一:创立与初期发展

格科微电子(GALAXYCORE)公司成立于2003年,由中国半导体行业的领军人物赵立新创立。赵立新曾在新加坡国立半导体公司和美国ESS公司积累了丰富的半导体设计经验,回国后,他凭借对CMOS图像传感器的深刻理解,创立了这家公司。初期,格科微电子专注于设计和开发具有成本优势的CMOS图像传感器,这些传感器主要用于功能手机和PC摄像头市场。随着技术的不断积累和产品线的扩展,格科微电子逐渐在市场上站稳了脚跟。

故事二:抓住智能手机市场机遇

进入2007年,随着国内智能手机市场的快速发展,格科微电子敏锐地捕捉到了这一机遇,迅速调整经营重点,将主要资源投入到智能手机图像传感器的研发和销售中。通过不断创新和优化产品设计,格科微电子的CMOS图像传感器在智能手机领域获得了广泛应用,逐渐在行业内崭露头角。这一转型不仅推动了公司的快速发展,也奠定了格科微电子在CMOS图像传感器领域的市场地位。

故事三:技术突破与市场份额提升

在持续的技术创新和研发投入下,格科微电子于2013年实现了重大技术突破,成为中国首家将背照技术应用于200万像素CMOS图像传感器并成功实现批量交付的国内企业。这一技术突破极大地提升了公司产品的性能和市场竞争力,使得格科微电子在全球CMOS图像传感器市场的份额迅速提升。到2014年,格科微电子已稳坐国内CMOS图像传感器出货量第一的宝座,并在全球市场占有率上达到了第二,全年出货量超过9.4亿颗芯片。

故事四:科创板上市与资本助力

2023年8月18日,格科微电子在上海证券交易所科创板成功上市,盘前市值一度突破千亿。此次上市不仅为公司带来了大量的资金支持,也进一步提升了公司的品牌影响力和市场竞争力。在资本市场的助力下,格科微电子将继续加大在技术研发、市场拓展和产能扩张等方面的投入,推动公司业务的持续快速增长。

故事五:新项目建设与未来展望

为了满足市场日益增长的需求,格科微电子启动了“12英寸CIS集成电路特色工艺研发与产业化项目”。该项目旨在通过引进先进设备和技术,提升公司在中高阶CIS产品的生产能力。目前,项目已完成首批设备的安装调试,并顺利产出了良率符合预期的合格产品。随着更多设备的安装和投产,公司的产能将进一步提升,预计最终将实现月产20,000片晶圆的产能。这一项目的成功实施将有助于公司在未来市场竞争中占据更有利的位置,实现更大的发展。

HCC Industries公司的发展小趣事

近年来,随着全球对环境保护和可持续发展的重视,HCC Industries积极响应号召,制定了绿色可持续发展战略。公司加大了对环保技术和绿色产品的研发投入,推出了一系列符合环保标准的微电子部件产品。同时,HCC还通过优化生产工艺和节能减排措施,降低了生产过程中的能源消耗和污染排放。这一战略不仅赢得了客户和消费者的广泛赞誉,也为公司带来了更加可持续的发展前景。

Belden Wire and Cable公司的发展小趣事

为了满足不断增长的市场需求,1928年,Belden在印第安纳州里士满开设了一家专为制造电线而设计的新工厂。这家工厂的建立极大地提升了公司的产能和效率,为公司的进一步发展提供了有力保障。在随后的几十年里,随着第二次世界大战的爆发和战后经济的复苏,里士满工厂经历了多次扩建和升级,逐渐成为百通最大的制造工厂之一。

佰宏(BHFUSE)公司的发展小趣事

BHFUSE佰宏实业成立于2013年,创立之初,公司便确立了专注于大电流、高电压、低内阻的PPTC自恢复保险丝的研发与生产。面对激烈的市场竞争,佰宏团队凭借对技术的深刻理解和对市场的敏锐洞察,逐步赢得了客户的认可。在创立初期,佰宏便与多家知名代工厂建立了合作关系,为其提供优质的保护器件,逐步在行业中树立了良好的口碑。

Alpha Semiconductor公司的发展小趣事

随着技术的不断积累和市场的变化,Alpha Semiconductor于1988年开始为OEM厂家设计定制产品。这一转型是公司发展历程中的重要一步,它使得Alpha Semiconductor能够更深入地了解客户需求,提供更加贴合市场需求的产品解决方案。通过不断的创新和改进,Alpha Semiconductor逐渐在半导体市场中树立了良好的口碑。

Furukawa Electric Co Ltd公司的发展小趣事

随着技术的不断积累和市场的变化,Alpha Semiconductor于1988年开始为OEM厂家设计定制产品。这一转型是公司发展历程中的重要一步,它使得Alpha Semiconductor能够更深入地了解客户需求,提供更加贴合市场需求的产品解决方案。通过不断的创新和改进,Alpha Semiconductor逐渐在半导体市场中树立了良好的口碑。

问答坊 | AI 解惑

电子元器件知识集

奉上电子基础知识供大家分享!…

查看全部问答>

缺少热分析将使设计心血面临危险

记得从什么时候开始,热分析意味着撤回原型并确定是否需要额外加入两个散热片和一个风扇吗?现在再尝试这种方式你将发现身处泥潭却无计可逃。毕竟,热可能会影响电气性能并最终缩短平均无故障时间。    回顾我年富力强的工程时代,我在热分析上 ...…

查看全部问答>

wince suspend错误

PWR_IST: pPWR->State = 0x2 PMGET! System Power state is \'on\', flags 0x00010000 >>>>>>>>>>>>>>>>>>> state == on POWER_STATE_SUSPEND …

查看全部问答>

ads应用手册资料

介绍了ads如何创建个工作和软件的使用方法…

查看全部问答>

关于VXWORKS 嵌入式系统开发具体过程的问题!

我已做了半年的VXWORKS嵌入式系统上层应用程序,现在开始做系统了,对于BOOTROM\\系统移植都是些很概念性的东西!目前印制板已经完成了!我现在手上有,BOOTROM和BSP以及开发环境都已经搭好, 现在我该怎么做才能让我的系统在板子上跑起来呢? 请各位指 ...…

查看全部问答>

SHLoadImageFile 加载本地ico 图片 失败

我 想 从文件 加载 ico 图片  用了SHLoadImageFile 函数 GetlastErr 是6  总是 加载不上 另外我也用了 LoadImage  报 1814 的错    现在不知道 怎么 弄了  请各位大侠 指点一下  &nbs ...…

查看全部问答>

.r43库文件怎么生成

我想将自己的C函数做成 .r43库文件,但不知如何操作 用于MSP430 单片机编程的 …

查看全部问答>

三极管是流控元器件?

都说三极管是流控器件,基极电流控制集电极电流,可是基极电流也是由加在基极上的电压来确定的,这个,为什么非要说成是流控元器件呢,说成压控元器件,应该也是可以的吧?求教。。。…

查看全部问答>

请有经验的人推荐一款电流5A 耐温125度可恢复的保险丝

请有经验的人推荐一款电流5A 耐温125度可恢复的保险丝 \0\0\0eeworldpostqq…

查看全部问答>