【已解决】BK7231N SDK红外功能异常

Wi-Fi 设备、Wi-Fi 低功耗设备、Wi-Fi BLE 双模设备、Ethernet设备、Ethernet+Wi-Fi设备等
mrlin95
Posts: 27

yangjie 2023年 Jun 26日 11:42
mrlin95 2023年 Jun 26日 11:39
yangjie 2023年 Jun 26日 10:18

可以描述下,连上局域网后,操作多少次,过了多少时间出现这个问题的吗

出现这个问题的只有第一个延迟 后面的延迟误差都是2030us 应该是在允许范围内的

好的,我这边测试下

请问您那边后面用热点复现这个问题了吗

yangjie
Posts: 213

Re: BK7231N SDK红外功能异常

mrlin95 2023年 Jun 27日 08:54
yangjie 2023年 Jun 26日 11:42
mrlin95 2023年 Jun 26日 11:39

出现这个问题的只有第一个延迟 后面的延迟误差都是2030us 应该是在允许范围内的

好的,我这边测试下

请问您那边后面用热点复现这个问题了吗

是的,刚进入局域网是会有这个问题,但是还不清楚是什么原因导致的这个问题。

yangjie
Posts: 213

Re: BK7231N SDK红外功能异常

mrlin95 2023年 Jun 27日 08:54
yangjie 2023年 Jun 26日 11:42
mrlin95 2023年 Jun 26日 11:39

出现这个问题的只有第一个延迟 后面的延迟误差都是2030us 应该是在允许范围内的

好的,我这边测试下

请问您那边后面用热点复现这个问题了吗

你好。进入局域网后红外码值变形是因为硬件定时器的定时不准了,目前还不清楚为什么会这个样子。但是我发现硬件定时器不准确是在刚启动的一段时间,启动之后过一段时间就会变准确。所以这里给你提供一个暂时的解决办法,绕开这个问题。你可以在正式发送红外码值前来一个较长的低电平回调时间,使用硬件定时器稍微后面点位置,这样可以避开刚开始不准的时间。可以按照下图这样进行修改:

红外局域网超时.png

这里需要注意的是,要保证一整个的红外码值的发送时间不能超过 40 s(当然这也是不可能的,没有一个红外遥控器的码值会有这么长的时间),这是因为为了保证硬件定时器的准确值,避免被其他中断打断,在红外发送前关闭了 fiq (主要用于网络数据传输)、32k定时器中断(会用于线程调度)和屏蔽其他一些外设的中断。TuyaOS 中的看门狗会 20s 喂狗一次,3次不喂狗就会重启。关闭了 32k定时器中断 也就无法进行线程调度了,无法喂狗了,导致设备重启。还有一个问题是红外发送接收启动会屏蔽 fiq 中断,这样会导致红外发送和接收期间无法进行网络数据的传输。

mrlin95
Posts: 27

Re: BK7231N SDK红外功能异常

yangjie 2023年 Jun 28日 18:07
mrlin95 2023年 Jun 27日 08:54
yangjie 2023年 Jun 26日 11:42

好的,我这边测试下

请问您那边后面用热点复现这个问题了吗

你好。进入局域网后红外码值变形是因为硬件定时器的定时不准了,目前还不清楚为什么会这个样子。但是我发现硬件定时器不准确是在刚启动的一段时间,启动之后过一段时间就会变准确。所以这里给你提供一个暂时的解决办法,绕开这个问题。你可以在正式发送红外码值前来一个较长的低电平回调时间,使用硬件定时器稍微后面点位置,这样可以避开刚开始不准的时间。可以按照下图这样进行修改:
红外局域网超时.png

这里需要注意的是,要保证一整个的红外码值的发送时间不能超过 40 s(当然这也是不可能的,没有一个红外遥控器的码值会有这么长的时间),这是因为为了保证硬件定时器的准确值,避免被其他中断打断,在红外发送前关闭了 fiq (主要用于网络数据传输)、32k定时器中断(会用于线程调度)和屏蔽其他一些外设的中断。TuyaOS 中的看门狗会 20s 喂狗一次,3次不喂狗就会重启。关闭了 32k定时器中断 也就无法进行线程调度了,无法喂狗了,导致设备重启。还有一个问题是红外发送接收启动会屏蔽 fiq 中断,这样会导致红外发送和接收期间无法进行网络数据的传输。

修改后局域网控制正常了
请问0x00802000 + 0x10 * 4 0x00802A00 + 0x13 * 4 这两个寄存器的含义可以开放吗 现在红外使用的是定时器0 这个产品还有电压电流计量的功能 红外发送的时候定时器中断关闭了 会导致计量不准 我这边想把计量的定时器改成定时器1 红外发送的时候定时器1开着 中断里处理的内容不多 应该不会影响红外发送

Attachments
微信截图_20230629100725.png
mrlin95
Posts: 27

Re: BK7231N SDK红外功能异常

mrlin95 2023年 Jun 29日 10:13
yangjie 2023年 Jun 28日 18:07
mrlin95 2023年 Jun 27日 08:54

请问您那边后面用热点复现这个问题了吗

你好。进入局域网后红外码值变形是因为硬件定时器的定时不准了,目前还不清楚为什么会这个样子。但是我发现硬件定时器不准确是在刚启动的一段时间,启动之后过一段时间就会变准确。所以这里给你提供一个暂时的解决办法,绕开这个问题。你可以在正式发送红外码值前来一个较长的低电平回调时间,使用硬件定时器稍微后面点位置,这样可以避开刚开始不准的时间。可以按照下图这样进行修改:
红外局域网超时.png

这里需要注意的是,要保证一整个的红外码值的发送时间不能超过 40 s(当然这也是不可能的,没有一个红外遥控器的码值会有这么长的时间),这是因为为了保证硬件定时器的准确值,避免被其他中断打断,在红外发送前关闭了 fiq (主要用于网络数据传输)、32k定时器中断(会用于线程调度)和屏蔽其他一些外设的中断。TuyaOS 中的看门狗会 20s 喂狗一次,3次不喂狗就会重启。关闭了 32k定时器中断 也就无法进行线程调度了,无法喂狗了,导致设备重启。还有一个问题是红外发送接收启动会屏蔽 fiq 中断,这样会导致红外发送和接收期间无法进行网络数据的传输。

修改后局域网控制正常了
请问0x00802000 + 0x10 * 4 0x00802A00 + 0x13 * 4 这两个寄存器的含义可以开放吗 现在红外使用的是定时器0 这个产品还有电压电流计量的功能 红外发送的时候定时器中断关闭了 会导致计量不准 我这边想把计量的定时器改成定时器1 红外发送的时候定时器1开着 中断里处理的内容不多 应该不会影响红外发送

不用了 直接用定时器0就行了 之前计量定时器改成1了 会被关掉 导致计量不准 改回0正常了 谢谢 麻烦您了

yangjie
Posts: 213

Re: BK7231N SDK红外功能异常

mrlin95 2023年 Jun 29日 10:13
yangjie 2023年 Jun 28日 18:07
mrlin95 2023年 Jun 27日 08:54

请问您那边后面用热点复现这个问题了吗

你好。进入局域网后红外码值变形是因为硬件定时器的定时不准了,目前还不清楚为什么会这个样子。但是我发现硬件定时器不准确是在刚启动的一段时间,启动之后过一段时间就会变准确。所以这里给你提供一个暂时的解决办法,绕开这个问题。你可以在正式发送红外码值前来一个较长的低电平回调时间,使用硬件定时器稍微后面点位置,这样可以避开刚开始不准的时间。可以按照下图这样进行修改:
红外局域网超时.png

这里需要注意的是,要保证一整个的红外码值的发送时间不能超过 40 s(当然这也是不可能的,没有一个红外遥控器的码值会有这么长的时间),这是因为为了保证硬件定时器的准确值,避免被其他中断打断,在红外发送前关闭了 fiq (主要用于网络数据传输)、32k定时器中断(会用于线程调度)和屏蔽其他一些外设的中断。TuyaOS 中的看门狗会 20s 喂狗一次,3次不喂狗就会重启。关闭了 32k定时器中断 也就无法进行线程调度了,无法喂狗了,导致设备重启。还有一个问题是红外发送接收启动会屏蔽 fiq 中断,这样会导致红外发送和接收期间无法进行网络数据的传输。

修改后局域网控制正常了
请问0x00802000 + 0x10 * 4 0x00802A00 + 0x13 * 4 这两个寄存器的含义可以开放吗 现在红外使用的是定时器0 这个产品还有电压电流计量的功能 红外发送的时候定时器中断关闭了 会导致计量不准 我这边想把计量的定时器改成定时器1 红外发送的时候定时器1开着 中断里处理的内容不多 应该不会影响红外发送

你可以把 26M寄存器的操作给注释掉,只保留对 fiq 和 32k 寄存器的操作。看下有改善不,对26M寄存器的操作会影响到 timer1,timer0。对fiq 和 32k 寄存器的操作是需要保留的,因为这两中断会影响到硬件定时的中断。

修改如下:

Snipaste_2023-06-29_15-38-03.png
yangjie
Posts: 213

Re: BK7231N SDK红外功能异常

mrlin95 2023年 Jun 29日 10:33
mrlin95 2023年 Jun 29日 10:13
yangjie 2023年 Jun 28日 18:07

你好。进入局域网后红外码值变形是因为硬件定时器的定时不准了,目前还不清楚为什么会这个样子。但是我发现硬件定时器不准确是在刚启动的一段时间,启动之后过一段时间就会变准确。所以这里给你提供一个暂时的解决办法,绕开这个问题。你可以在正式发送红外码值前来一个较长的低电平回调时间,使用硬件定时器稍微后面点位置,这样可以避开刚开始不准的时间。可以按照下图这样进行修改:
红外局域网超时.png

这里需要注意的是,要保证一整个的红外码值的发送时间不能超过 40 s(当然这也是不可能的,没有一个红外遥控器的码值会有这么长的时间),这是因为为了保证硬件定时器的准确值,避免被其他中断打断,在红外发送前关闭了 fiq (主要用于网络数据传输)、32k定时器中断(会用于线程调度)和屏蔽其他一些外设的中断。TuyaOS 中的看门狗会 20s 喂狗一次,3次不喂狗就会重启。关闭了 32k定时器中断 也就无法进行线程调度了,无法喂狗了,导致设备重启。还有一个问题是红外发送接收启动会屏蔽 fiq 中断,这样会导致红外发送和接收期间无法进行网络数据的传输。

修改后局域网控制正常了
请问0x00802000 + 0x10 * 4 0x00802A00 + 0x13 * 4 这两个寄存器的含义可以开放吗 现在红外使用的是定时器0 这个产品还有电压电流计量的功能 红外发送的时候定时器中断关闭了 会导致计量不准 我这边想把计量的定时器改成定时器1 红外发送的时候定时器1开着 中断里处理的内容不多 应该不会影响红外发送

不用了 直接用定时器0就行了 之前计量定时器改成1了 会被关掉 导致计量不准 改回0正常了 谢谢 麻烦您了

你红外和计量用同一个定时器?这样可能会有问题的,不建议你使用同一个硬件定时器,最好分开使用。

mrlin95
Posts: 27

Re: BK7231N SDK红外功能异常

yangjie 2023年 Jun 29日 15:47
mrlin95 2023年 Jun 29日 10:33
mrlin95 2023年 Jun 29日 10:13

修改后局域网控制正常了
请问0x00802000 + 0x10 * 4 0x00802A00 + 0x13 * 4 这两个寄存器的含义可以开放吗 现在红外使用的是定时器0 这个产品还有电压电流计量的功能 红外发送的时候定时器中断关闭了 会导致计量不准 我这边想把计量的定时器改成定时器1 红外发送的时候定时器1开着 中断里处理的内容不多 应该不会影响红外发送

不用了 直接用定时器0就行了 之前计量定时器改成1了 会被关掉 导致计量不准 改回0正常了 谢谢 麻烦您了

你红外和计量用同一个定时器?这样可能会有问题的,不建议你使用同一个硬件定时器,最好分开使用。

确实 红外控制完计量就不更新了 我把26M去掉试试

mrlin95
Posts: 27

Re: BK7231N SDK红外功能异常

yangjie 2023年 Jun 29日 15:44
mrlin95 2023年 Jun 29日 10:13
yangjie 2023年 Jun 28日 18:07

你好。进入局域网后红外码值变形是因为硬件定时器的定时不准了,目前还不清楚为什么会这个样子。但是我发现硬件定时器不准确是在刚启动的一段时间,启动之后过一段时间就会变准确。所以这里给你提供一个暂时的解决办法,绕开这个问题。你可以在正式发送红外码值前来一个较长的低电平回调时间,使用硬件定时器稍微后面点位置,这样可以避开刚开始不准的时间。可以按照下图这样进行修改:
红外局域网超时.png

这里需要注意的是,要保证一整个的红外码值的发送时间不能超过 40 s(当然这也是不可能的,没有一个红外遥控器的码值会有这么长的时间),这是因为为了保证硬件定时器的准确值,避免被其他中断打断,在红外发送前关闭了 fiq (主要用于网络数据传输)、32k定时器中断(会用于线程调度)和屏蔽其他一些外设的中断。TuyaOS 中的看门狗会 20s 喂狗一次,3次不喂狗就会重启。关闭了 32k定时器中断 也就无法进行线程调度了,无法喂狗了,导致设备重启。还有一个问题是红外发送接收启动会屏蔽 fiq 中断,这样会导致红外发送和接收期间无法进行网络数据的传输。

修改后局域网控制正常了
请问0x00802000 + 0x10 * 4 0x00802A00 + 0x13 * 4 这两个寄存器的含义可以开放吗 现在红外使用的是定时器0 这个产品还有电压电流计量的功能 红外发送的时候定时器中断关闭了 会导致计量不准 我这边想把计量的定时器改成定时器1 红外发送的时候定时器1开着 中断里处理的内容不多 应该不会影响红外发送

你可以把 26M寄存器的操作给注释掉,只保留对 fiq 和 32k 寄存器的操作。看下有改善不,对26M寄存器的操作会影响到 timer1,timer0。对fiq 和 32k 寄存器的操作是需要保留的,因为这两中断会影响到硬件定时的中断。

修改如下:
Snipaste_2023-06-29_15-38-03.png

26M注释了还是不行 定时器 1还是会对计量产生影响不过影响比较小 定时器23影响很大 45定时器好像不工作

yangjie
Posts: 213

Re: BK7231N SDK红外功能异常

mrlin95 2023年 Jun 29日 16:25
yangjie 2023年 Jun 29日 15:44
mrlin95 2023年 Jun 29日 10:13

修改后局域网控制正常了
请问0x00802000 + 0x10 * 4 0x00802A00 + 0x13 * 4 这两个寄存器的含义可以开放吗 现在红外使用的是定时器0 这个产品还有电压电流计量的功能 红外发送的时候定时器中断关闭了 会导致计量不准 我这边想把计量的定时器改成定时器1 红外发送的时候定时器1开着 中断里处理的内容不多 应该不会影响红外发送

你可以把 26M寄存器的操作给注释掉,只保留对 fiq 和 32k 寄存器的操作。看下有改善不,对26M寄存器的操作会影响到 timer1,timer0。对fiq 和 32k 寄存器的操作是需要保留的,因为这两中断会影响到硬件定时的中断。

修改如下:
Snipaste_2023-06-29_15-38-03.png

26M注释了还是不行 定时器 1还是会对计量产生影响不过影响比较小 定时器23影响很大 45定时器好像不工作

bk 定时器开发者可以使用的只有 0-3。在红外发送期间,为了保证硬件定时器的精度,会屏蔽掉一些中断(fiq,32k),fiq中断会影响到无线数据的通信;32k 会影响到 timer 2-3, RTOS 的调度。如果你要使用 timer 2-3, 可以将 32k 屏蔽相关的代码也给注释掉,但是这样可能会对红外的准确度造成一点影响。

还有较为重要的一点是,调试期间你可以将日志等级设置为 TAL_LOG_LEVEL_DEBUG 。但是正式产品中应将日志等级设置更高一点,不要再是 TAL_LOG_LEVEL_DEBUG ,一般正式产品日志等级为 TAL_LOG_LEVEL_ERR 。因为在这次的调试过程中发现一个日志打印的问题,导致打印一些码库内容的时候可能会导致程序卡死,类似于 Rev MQTT:{"t":1687672355,"protocol":5,"data":{"devId":"xxxxxxxxxxxxxxxxxxxxxx","dps":{"201":"{\"control\":\"send_ir\",\"head\":\"xxxxxxxxxxxxxxxxxxxxxx 。
这个问题会在 TuyaOS 3.8.x 之后的版本进行修复。

Post Reply