完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我在使用IDF 4.1 的RMT模块时,先按照例子的方式配置了接收和发送代码,使用另外的红外发生器发送代码到开发板上,然后将接收到的数据,反向发送出来,红外示波器看起来,丢掉了大约一半的脉冲时间,从接收到的原始数据来看,每个rmt_item32_t中的duration0和duration1 折算成时间值,似乎都只有实际发送的1/2左右。
这是为什么呢? 我的Ticks时间计算是按照,80Mhz/CLK_DIV/1000,000 计算的。 接收代码如下: rmt_item32_t rmt_rx_data[1000];........ rmt_config_t rmt_rx_config = RMT_DEFAULT_CONFIG_RX(GPIO_NUM_35, RMT_CHANNEL_0); // 这里的CLK_DIV为80,filter_ticks_thresh=100 ,idle_threshold=12000 rmt_config(&rmt_rx_config); rmt_driver_install(RMT_CHANNEL_0, 1000, 0); //get RMT RX ringbuffer rmt_get_ringbuf_handle(RMT_CHANNEL_0, &rb); // Start receive rmt_rx_start(RMT_CHANNEL_0, true); while (rb&&!is_stop) { items = (rmt_item32_t *) xRingbufferReceive(rb, &length, 1000); if (items) { rmt_rx_data_size=length; memcpy(rmt_rx_data, items, length); vRingbufferReturnItem(rb, (void *) items); } else { break; } } |
|
相关推荐
1个回答
|
|
|
您遇到的问题可能是由于以下几个原因导致的:
1. 时钟分频器(CLK_DIV)设置不正确:确保您的CLK_DIV设置正确,以便在接收和发送数据时获得准确的脉冲宽度。您可以根据实际需求调整CLK_DIV值。 2. 数据接收不准确:在接收数据时,可能由于信号干扰或其他原因导致接收到的数据不准确。请检查您的硬件连接和信号质量。 3. RMT配置问题:请确保您的RMT配置正确,包括通道选择、接收/发送模式等。 4. 红外示波器精度问题:红外示波器可能存在一定的测量误差,导致您观察到的脉冲时间丢失。 为了解决这个问题,您可以尝试以下步骤: 1. 检查您的CLK_DIV设置,确保它与您的时钟频率和所需的脉冲分辨率相匹配。 2. 检查硬件连接和信号质量,确保红外信号在接收过程中没有受到干扰。 3. 仔细检查您的RMT配置,确保所有参数都设置正确。 4. 如果可能,请尝试使用其他红外示波器或测量工具来验证您的结果。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
176 浏览 0 评论
946 浏览 0 评论
1674 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1334 浏览 1 评论
1234 浏览 1 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1254浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
928浏览 3评论
2341浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2529浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1052浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 12:14 , Processed in 0.460294 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
900
