请教: ESP8266 (GPIO15)红外载波信号PWM生成

yangtao
Posts: 19
Joined: Tue Feb 02, 2016 3:03 pm

请教: ESP8266 (GPIO15)红外载波信号PWM生成

Postby yangtao » Wed May 04, 2016 11:53 am

我需要生成红外载波信号,频率从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也做了相应的调整)如果可以的话,请问要修改什么寄存器?

costaud
Posts: 138
Joined: Fri Oct 24, 2014 7:40 pm

Re: 请教: ESP8266 (GPIO15)红外载波信号PWM生成

Postby costaud » Thu May 05, 2016 5:12 pm

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。

Adam

yangtao
Posts: 19
Joined: Tue Feb 02, 2016 3:03 pm

Re: 请教: ESP8266 (GPIO15)红外载波信号PWM生成

Postby yangtao » Thu May 05, 2016 5:38 pm

Adam,
谢谢。

GPIO14 可以用。 (这个pin也用在I2C,有点可惜了)

dearwind153
Posts: 49
Joined: Sun Feb 28, 2016 7:47 pm

Re: 请教: ESP8266 (GPIO15)红外载波信号PWM生成

Postby dearwind153 » Mon May 16, 2016 12:09 am

这个例程很有用

Who is online

Users browsing this forum: MSN [Bot] and 4 guests