完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先抛出楼主的疑问:
1、 STM32串口的IrDA一般应用在什么场合? 2、 如何配合硬件来实现?比如RX直接连接到红外接收头么(现在的红外头自带解码啊,收到38KHz的脉冲输出 高,没收到脉冲信号输出 低。)接收头都能自己解码了,还需要IrDA做什么呢? 3、 针对于38KHz的信号,IrDA是怎么实现的呢?即串口要发送一个字节时,irDA是怎么实现的呢? 4、另外提个问题:针对于38KHz的红外调制有什么好的解决方案么?(38KHz的载波PWM可以解决,如何对其进行开关控制呢?) 楼主的目的是进行红外通讯来着,看到STM32有这个IrDA,索性了解下。 首先来点理论的解释,楼主看了一遍表示依旧茫然一片: IrDA是一个半双工通信协议。如果发送器忙(也就是UART正在送数据给IrDA编码器),IrDA接收线上的任何数据都将被IrDA解码器所忽略。如果接收器忙即:UART正在接收从IrDA解码器来的解码数据,从UART的TX上到IrDA的数据将不会被IrDA编码。 IrDA SIR物理层规定使用反相归零调制方案(RZI),该方案用一个红外光脉冲代表逻辑'0'。 SIR发送编码器对从UART输出的NRZ(非归零)比特流进行调制。输出脉冲流被传送到一个外部输出驱动器和红外LED。 SIR接收解码器对来自红外接收器的归零位比特流进行解调,并将接收到的NRZ串行比特流输出到UART。在空闲状态里,解码器输入通常是高。 发送编码器输出的极性和解码器的输入相反。当解码器输入低时,检测到一个起始位。 SIR解码器把接收到的IrDA信号转变成比特流后发送给UART。 SIR接收逻辑把高电平状态解释为'1',把低脉冲解释为'0'。 SIR发送逻辑把'0'作为高脉冲发送,把'1'作为低电平发送。 发送编码器输出与解码器输入有着相反的极性。当空闲时,SIR输出处于低状态。 在IrDA模式里,UART_CR2寄存器上的STOP位必须配置成1个停止位。 IrDA红外低功耗模式 IrDA可以工作在正常模式,也可以工作在低功耗模式。选择低功耗模式需要把UART_CR5寄存器的IRLP位置1。 USART功能概述 接口通过三个引脚与其他设备连接在一起(见图248)。任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。 RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。 TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。 ● 总线在发送或接收前应处于空闲状态 ● 一个起始位 ● 一个数据字(8或9位),最低有效位在前 ● 0.5,1.5,2个的停止位,由此表明数据帧的结束 ● 使用分数波特率发生器 —— 12位整数和4位小数的表示方法。 ● 一个状态寄存器(USART_SR) ● 数据寄存器(USART_DR) ● 一个波特率寄存器(USART_BRR),12位的整数和4位小数 ● 一个智能卡模式下的保护时间寄存器(USART_GTPR) 关于以上寄存器中每个位的具体定义,请参考寄存器描述第节:USART寄存器描述。 在同步模式中需要下列引脚: ● CK:发送器时钟输出。此引脚输出用于同步传输的 时钟, (在Start位和Stop位上没有时钟脉冲,软件可选地,可以在最后一个数据位送出一个时钟脉冲)。数据可以在RX上同步被接收。这可以用来控制带有移位寄存器的外部设备(例如LCD驱动器)。时钟相位和极性都是软件可编程的。在智能卡模式里,CK可以为智能卡提供时钟。 在IrDA模式里需要下列引脚: ● IrDA_RDI: IrDA模式下的数据输入。 ● IrDA_TDO: IrDA模式下的数据输出。 下列引脚在硬件流控模式中需要: ● nCTS: 清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。 |
|
相关推荐
5个回答
|
|
针对于38KHz的串口通讯红外调制有什么好的解决方案么?(38KHz的载波PWM可以解决,如何对其进行开关控制呢?)
即:如何将串口发送的数据加载上去呢?串口波特率为2400,楼主目前想到的是通过硬件来实现,加个 与门 将UART的Tx与38Khz的PWM进行 “与”处理。 但是觉得这样发挥不到软件工程师的优势,不知道大家一般怎么处理串口红外通讯? |
|
|
|
|
|
38K的红外很难承受的了2.4K的数据通信!!!
|
|
|
|
|
|
|
|
目前波特率2400红外通讯还是很稳定的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
659 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1088 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1563 浏览 1 评论
532 浏览 0 评论
1062 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-7 14:30 , Processed in 0.805655 second(s), Total 52, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号