STM32操作TFBS4711红外模块、数据发送抓波分析

序言 :

     STM32内部USART支持红外IrDA物理层协议,可以配置成IrDA模式直接驱动TFBS4711,实现红外收发。

一:STM32CubeMx对串口配置Irda模式 如下所示:

发送端  RX接收可能会出现干扰,如:接收端 Tx 不停得发送数据,发射端 Tx只要发送数据,发送端  RX数据就会出现乱码,Cubmx如下配置可避免

 

 

 

根据以上配置,CubeMX自动生成代码:

二、单片机(红外模块)发送端添加以下代码:

 

  •  while(1) 中增加以下代码:
  •  HAL_IRDA_Transmit(&hirda1, (uint8_t*)"ABCD", 4, 0xFFFF); // 发送符号
  • HAL_Delay(500);

 

单片机串口引脚(TX、RX)连接红外模块波形

可以看出:发射端默认“低电平”、接收端默认“高电平”;

上图发送数据是“ABCD”;根据波形分析,也可以看出,并非我们常规的串口波形,应该是走IrDA物理层协议波形

三、单片机(红外模块)接收端添加以下代码:

 

  • // 重载 HAL_IRDA_RxCpltCallback 接收中断响应函数(写在main.c里就行了)
  • void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda)
  • {
  •   uint8_t ret = HAL_OK;
  •   if(hirda->Instance == USART1){
  •     do{
  •       ret = HAL_IRDA_Receive_IT(hirda,RxBuff,4); // 接收IrDA数据并开启下一次中断
  •       Flag++;
  •     }while(ret != HAL_OK);
  •   }
  • }
  •    HAL_IRDA_Receive_IT(&hirda1, (uint8_t *)RxBuff, 4);  //相当于开启红外中 
  •   while (1)
  •   {
  •    HAL_Delay(500);
  •     memset(RxBuff,0x00,4);
  •   }

 

 

 

单片机(接收端红外模块)RX、Tx引脚抓波:

TX引脚不发送任何数据,Rx引脚不停的在接收数据

四、单片机(红外模块接收端)Rx引脚、单片机(红外模块发射端)Tx引脚

主要代码片段:

// 重载 HAL_IRDA_RxCpltCallback 接收中断响应函数(写在main.c里就行了)
void HAL_IRDA_RxCpltCallback(IRDA_HandleTypeDef *hirda)
{
  uint8_t ret = HAL_OK;
  if(hirda->Instance == USART1){
    do{
      ret = HAL_IRDA_Receive_IT(hirda,RxBuff,4); // 接收IrDA数据并开启下一次中断
      Flag++;
    }while(ret != HAL_OK);
  }

}
 /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
   HAL_IRDA_Receive_IT(&hirda1, (uint8_t *)RxBuff, 4);  //相当于开启红外中断  接收端是开启,发送时可不用
 
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
   
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
   
//   HAL_IRDA_Transmit(&hirda1, (uint8_t*)"ABCD", 4, 0xFFFF); // 发送符号'c'
    HAL_Delay(500);
    memset(RxBuff,0x00,4);
    
  }
  /* USER CODE END 3 */
}

源码下载地址:

https://download.csdn.net/download/qq_35257512/14039097

 

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值