cc3200 pwm 产生38khz 红外信号
请教一下大家, 看了pwm sample ,还是有些不理解。
1、cc3200 怎么产生一个38khz的 载波?
2、怎么把红外信号附加上去?
首先将CC3200的timer配置为PWM模式,参考TI的Demo-example/pwm分配PWM的时钟,将输出PWM的周期设置为38kHz占空比50%;
其次可以将UART信号直接并联到红外38kHz的载波上,将数据进行传输,在接收方就会收到UART串口的信号。
可以参考之前有个类似的帖子的讨论:
http://www.deyisupport.com/question_answer/wireless_connectivity/wifi/f/105/t/106542.aspx
上面的帖子就是我发的, 请问一下,后面怎么把红外数据附加到这个38khz 上面了?
红外串口UART发射端口电路图可参考:
该图中红外发射管和串口UART接口电路,红外通讯发送通过CC3200UART串口发送数据,然后与CC3200产生的PWM信号迭加后驱动红外发射管发光,电路中串接的两个红外发射管(LED4和LED5)是为了增强发射信号。
补充一点,关于红外接收的UART设计可以参考如下电路,针对不同的红外接收芯片需要查看具体的接收电路连接特点,如下的电路仅作参考。
一般不是通过串口来吧? 现在程序里有一组红外数据(红外信号 高低电平持续时间), 需要 迭加到38khz的 载波里, 请问怎么做了?
请问,只用一个引脚可以吗? 我看了cc2530 hal_irgen_NEC.c ,只用了p1_1
可以通过串口传输数据也可以通过其他方式传输,如果不用串口传输就用你自己的红外数据(红外信号 高低电平持续时间)这个数据换掉上图中TX的信号线,通过通用的GPIO口延时的方式来发送数据。
可以加你为好友吗? 你 qq 微信 多少?
你好,请问一下。 这是参考的 pwm sample 来做的。
这样产生的38khz 正确吗?
#define TIMER_INTERVAL_RELOAD 2105
#define DUTYCYCLE_GRANULARITY 1052
产生38khz后,需要按高低电平持续时间,发射红外信号的延时方式 正确吗?
while(1)
{
MAP_UtilsDelay(8000);
MAP_TimerDisable(TIMERA2_BASE,TIMER_B);
MAP_UtilsDelay(800000);
MAP_TimerLoadSet(TIMERA2_BASE,TIMER_B,TIMER_INTERVAL_RELOAD);/*TIMER_INTERVAL_RELOAD = 80Mhz/38khz = 2105 */ 这里需要重新设置吗?
MAP_TimerMatchSet(TIMERA2_BASE,TIMER_B,DUTYCYCLE_GRANULARITY);/*DUTYCYCLE_GRANULARITY = 1052 占空比50%*/
MAP_TimerEnable(TIMERA2_BASE,TIMER_B);
}
你好, 我这样做 对吗?
1、产生38khz 载波
2、根据高低电平持续时间,产生红外信号
MAP_UtilsDelay(8000);
重新设置
MAP_TimerLoadSet(
MAP_TimerMatchSet
PWM的38kHz的载波产生后,通过另一个GPIO进行你要发送数据的高低电平,将这个高低电平串联到你的38Khz的载波上进行数据发送,也就是将上图中的串口TX信号换成GPIO进行数据发送。
那需要两个引脚 对吗?
不能将 pwm 输出引脚 直接接到 红外发射头, 用高低电平持续时间,控制38khz 载波的 输出 或 不输出。 这样的思路 可以吗?
不明白,为什么还有其他一个gpio 引脚, 是必须的吗?
仅用一个PWM引脚你的程序不是很好控制吧,我也没有试过仅用PWM引脚直接发送数据的,不过你可以尝试看看是否可以。
谢谢你的回复, 请教一下 cc3200 Timer 可以同时 捕获 和 溢出 吗? 或者我的思路不对。
我想获取红外信号( 如空调遥控器按下) 高低电平持续时间, 并在红外信号停止发射时(比如定时器溢出),退出定时器
Timer_cc 程序 代码上 没有修改, 引脚Pin4 接红外接收, 也没错。 但main.c 里面有一句代码,没搞懂。
MAP_PinConfigSet(PIN_05,PIN_TYPE_STD_PD,PIN_STRENGTH_6MA);