我需要生成红外载波信号,频率从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也做了相应的调整)如果可以的话,请问要修改什么寄存器?
请教: ESP8266 (GPIO15)红外载波信号PWM生成
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
-
- Posts: 49
- Joined: Sun Feb 28, 2016 7:47 pm
Who is online
Users browsing this forum: No registered users and 13 guests
Login
Newbies Start Here
Are you new to ESP8266?
Unsure what to do?
Dunno where to start?
Start right here!
Latest SDK
Documentation
Complete listing of the official ESP8266 related documentation release by ESPRESSIF!
Must read here!
- All times are UTC+08:00
- Top
- Delete all board cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. We are the manufacturer of ESP8266EX.