HC32L130J8TA红外测试(附电路图、程序)
本帖最后由 chenxiaolang 于 2020-10-30 16:11 编辑1、华大低功耗HC32L130J8TA系列有管脚可以输出38KHz PWM,用于红外调制,如下图所示
2、红外电路如下(完整原理图请参看附件pdf),接收部分用了两级三极管,后来证明没必要,红外接收管Pin3加一颗上拉连到MCU上即可,收发没问题
3、PCBA如下,由于只是测试板,做的比较宽松,也没特别注意布局
4、程序架构(完整工程请参看附件)
5、38K输出配置,这一块规格书提供的材料有点简单,我也没整特别明白,现在调制信号输出是38.4KHz(库函数里没找到38K的选项)
6、测试也比较简单,检测按键,发出一串数据,可以同一块板收,再用另一个串口发出到PC端
设计的很漂亮 用的红外模块是哪个 有空也试试 规格书提供的材料有点简陋 为什么后来三极管证明没必要了?那用了什么替代呢? 正圆椭圆 发表于 2020-10-30 23:01
设计的很漂亮 用的红外模块是哪个 有空也试试
台湾亿光的IRM-H638T/TR2 在水一方00 发表于 2020-10-31 23:10
为什么后来三极管证明没必要了?那用了什么替代呢?
第一次设计担心红外接收管输出的信号不标准,所以加了两级三极管,其实在红外接收管输出脚只加一颗上拉电阻就可以正常接收 楼主,如果我只要产生38K的波形给到红外引脚,是不是只要写以下代码即:
void P23_38K_init(void)
{
Clk_SetPeripheralGate(ClkPeripheralRtc,TRUE);
Clk_SetRCLFreq(ClkFreq38_4K);
Clk_SetRCL_StableTime(ClkCycle256);
Clk_Enable(ClkRCL,TRUE);
M0P_GPIO->P2ADS_f.P23 = 0; // 数字信号
M0P_GPIO->P23_SEL_f.SEL = 2; // 端口复用功能选择
M0P_GPIO->P2DIR_f.P23 = 0; // 端口方向
M0P_GPIO->CTRL1_f.IR_POL = 1; // 反向输出
//M0P_GPIO->CTRL1_f.IR_POL = 0; // 正向输出
}
盼复,谢谢大哥 现在红外的可靠距离是多远啊 为什么要拿掉三极管啊 请问楼主,这样配置后单片机主时钟变成了RCL,运行程序的主频只能是38.4k了对吗?有没有办法提高跑程序的频率,比如使用RCH ? 666666666666666666666666666 楼主这个小案例不错。
在水气热以及电表上基本都在使用红外通信,用于本地通信方式。受该种红外通信方式的限制,通信速率在1200、2400bps。
还有一种是多年前的手机笔记本也有红外接口,是近距离通信方式,通信速率高可以达到115200、1M速率。采用的调试方式是3/16 通信方式。
该种方式常见是38KHz 加载在发射TX上,其它厂家有已经有该种模式,内部已经加载好了,只需要TXD。
我们的MCU也可以巧妙的利用RCL(38.4KHz),38.4KHz,相对于38K 误差在范围内。
1.利用两个GPIO,一个TXD,另一个I能够映射到RCL 的IO 实现。
2. 一个I能够映射到RCL 的IO实现,结合定时器利用定时器按照位宽来开关RCL 的输出。
3. 同样的思路,利用DMA 位宽定时触发 开关RCL 控制寄存器。
后两个方法可以使用一个GPIO ,节省GPIO ,同时可以节省一个限流电阻和一个三极管。该方法在三表行业客户已经批量使用。
页:
[1]