yangtao wrote:
我需要生成红外载波信号,频率从32KHz到56KHz不等。
我测试了两种方法:Delta-Sigma和I2S
如果使用“delta sigma”,duty cycle太小了,为了增加距离,我需要更高的duty cycle,例如35%或者50%。
如果使用"I2S"模式,GPIO2可以达到我的要求,可是,GPIO12默认是pull-up(高电平),而在我们的系统中,高电平是发射红外,所以GPIO2不能用。
GPIO15,看似不错,可是,频率最低40.3KHz,不能达到我的要求。
可不可以修改I2S的前端clock divider?
我不介意用80MHz的CPU频率来运行系统。我的想法是:CPU clock从160MHz变成80MHz,GPIO15的频率也顺便降低到20KHz。
这样可以做到么?(目前调低CPU Clock到80MHz没作用,似乎SDK也做了相应的调整)如果可以的话,请问要修改什么寄存器?
Hi ,您好,
有几种方案可以考虑:
1. GPIO2 默认是高电平,仅在上电初始化阶段,可以在 user_rf_pre_init() 里面清除上拉。
2. GPIO14 也可以输出 WS clk,和 GPIO2 等效。
3. 红外 demo 的 I2S 实现里面有两种模式
一种是用 clock 信号产生载波。占空比 50% 不可调。
另一种是用 data 信号产生载波,通过DMA循环输出固定bit的数据,用不同 bit 的组合调整占空比。
如果 demo 里面没有,可以通过邮件索取最新的 demo。
AdamStatistics: Posted by costaud — Thu May 05, 2016 5:12 pm
]]>