NEC協(xié)議
發(fā)送端發(fā)送1 :560us脈沖 + 1680us低電平
發(fā)送端發(fā)送0 :560us脈沖 + 560us低電平
連發(fā)碼 : 9ms 低電平+2.5m 高電平+0.56ms 低電平 +97.94ms 高電平
引導(dǎo)碼 :9ms 的低電平 + 4.5ms 的高電平
接收端接收1 :560us低電平 + 1680us高電平
接收端接收0 :560us低電平 + 560us高電平
接收端連發(fā)碼 : 9ms 高電平+2.5m 低電平+0.56ms 高電平 +97.94ms 低電平
接收端引導(dǎo)碼 :9ms 的高電平 + 4.5ms 的低電平
接收端的數(shù)據(jù)引腳接上拉電平,也可以讓此腳連接的芯片引腳配置為上拉輸出模擬上拉電阻的作用。
因?yàn)榇松侠?a href="http://weightgang.cn/zhuanti/8qzvL8" style="color:#4595e6;" target="_blank">電阻的作用使接收端空閑時(shí)是高電平,從而電平狀態(tài)與發(fā)送的相反。
對(duì)于接收端而言,數(shù)據(jù)1和數(shù)據(jù)0都是低電平變高電平,是個(gè)上升沿,于是可以使用上升沿觸發(fā)中斷。用高電平時(shí)間的不同來(lái)區(qū)分二者。
發(fā)送數(shù)據(jù)
發(fā)送一次共32位,每一位都可以觸發(fā)升沿觸發(fā)中斷
hongwai.c
#include "hongwai.h"
#include "systick.h"
u32 Hong_Data; //紅外線接受的數(shù)據(jù)
u8 Hong_Flag; //接受是否完成
/*****************************************************************
函數(shù)名:Hongwai_Init()
函數(shù)功能:紅外初始化
輸入:無(wú)
輸出:無(wú)
****************************************************************/
void Hongwai_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸出,端口模擬它沒(méi)信號(hào)時(shí)高電平
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOG,&GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource15); //選擇GPIO管腳用作外部中斷線路,重映射
EXTI_ClearITPendingBit(EXTI_Line15);
EXTI_InitStructure.EXTI_Line = EXTI_Line15;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿觸發(fā),因?yàn)闆](méi)信號(hào)是高電平信號(hào)來(lái)低電平造成下降沿,正好以此為條件表示信號(hào)來(lái)了
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //觸發(fā)模式是中斷
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*****************************************************************
函數(shù)名:Hig_Cou()
函數(shù)功能:高電平時(shí)間判別函數(shù)
輸入:無(wú)
輸出:8位的時(shí)間判別參數(shù)
****************************************************************/
u8 Hig_Cou()
{
u8 t=0;
if(GPIO_ReadInputDataBit(GPIOG,GPIO_Pin_15)) //獲取GPIOG_Pin_15的輸入狀態(tài)
{
t++;
delay_us(20);
if(t>=250) return t; //t每自加一次就延時(shí)20us
}
return t;
}
/*****************************************************************
函數(shù)名:EXTI15_10_IRQHandler()
函數(shù)功能:中斷服務(wù)函數(shù),進(jìn)行解碼并存儲(chǔ)
輸入:無(wú)
輸出:無(wú)
****************************************************************/
void EXTI15_10_IRQHandler()
{
u8 tim; //高電平時(shí)間參數(shù)變量
u8 ok; //引導(dǎo)碼有效變量
u8 data; //接受高低電平
u8 num; //接受次數(shù)
while(1)
{
if(GPIO_ReadInputDataBit(GPIOG,GPIO_Pin_15)==1) //PG15輸入是高電平
{
tim = Hig_Cou(); //獲取高電平時(shí)間
if(tim>=250) break;//超時(shí)錯(cuò)誤
if(tim<250&&tim>200) ok = 1; //引導(dǎo)碼有效
if(tim<90&&tim>70) data = 1; //接受是高電平
else if(tim<40&&tim>15) data = 0; //接收是低電平
if(ok) //引導(dǎo)碼有效
{
Hong_Data <<=1; //移位
Hong_Data+=data; //把數(shù)據(jù)存入Hong_Data
}
if(num>=32) //32位4字節(jié)都接受完
{
Hong_Flag = 1; //傳輸完
break;
}
num++;
}
EXTI_ClearITPendingBit(EXTI_Line15); //消除EXTI_Line15的中斷標(biāo)志位
}
}
hongwai.h
#ifndef _hongwai_H
#define _hongwai_H
#include "system.h"
extern u32 Hong_Data;//全局變量
extern u8 Hong_Flag;
void Hongwai_Init(void);
u8 Hig_Cou(void);
#endif
main.c
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "hongwai.h"
int main()
{
u8 i=0;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級(jí)分組 分2組
LED_Init();
USART1_Init(9600);
Hongwai_Init();
while(1)
{
if(Hong_Flag==1)//接受完成
{
Hong_Flag=0; //清空標(biāo)志位,供下次使用
printf("發(fā)紅外接收碼是:%.8Xrn",Hong_Data);
Hong_Data=0;//清空數(shù)據(jù)供下次使用
}
i++;
if(i%20==0)
{
led1=!led1;
}
delay_ms(10);
}
}
上一篇:stm32---RS485半雙工通信
下一篇:stm32---DS18b20
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹(shù)莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- PCIe M.2接口測(cè)試的現(xiàn)狀、挑戰(zhàn)與泰克解決方案
- ABB在中國(guó)推出面向電子制造業(yè)的兩大全新機(jī)器人系列
- ABB在中國(guó)推出PoWa協(xié)作機(jī)器人系列
- 西門子 NX 新增 AI 助手等多項(xiàng)功能
- 貿(mào)澤即日起開(kāi)售適用于數(shù)據(jù)中心和網(wǎng)絡(luò)應(yīng)用的 全新TE Connectivity QSFP 112G SMT連接器
- ABB推出三大全新機(jī)器人系列,強(qiáng)化中國(guó)機(jī)器人市場(chǎng)領(lǐng)導(dǎo)地位
- 新思科技關(guān)于美國(guó)解除近期對(duì)華出口限制的聲明
- Wolfspeed 1700 V MOSFET 技術(shù),助力重塑輔助電源系統(tǒng)的耐用性和成本
- 英飛凌大中華區(qū) 2025 生態(tài)創(chuàng)新峰會(huì),究竟探討了哪些創(chuàng)新與生態(tài)合作?
- Microchip攜手Nippon Chemi-Con和NetVision 打造日本汽車市場(chǎng)首個(gè)ASA-ML攝像頭開(kāi)發(fā)生態(tài)系統(tǒng)
- 行業(yè)最低功耗藍(lán)牙SoC NCV-RSL10增強(qiáng)您的汽車設(shè)計(jì)
- VisualCamp在2018年上海MWC大會(huì)上發(fā)布移動(dòng)眼球追蹤技術(shù)
- 歐司朗集團(tuán)與大陸集團(tuán)的合資企業(yè)開(kāi)始投入運(yùn)營(yíng)
- 自動(dòng)駕駛的未來(lái)之路 或?qū)⒆呦蚬杨^壟斷
- 研究人員革新核磁共振成像技術(shù) 實(shí)時(shí)生成生理活動(dòng)
- 大普通信超高精度RTC芯片助力產(chǎn)業(yè)升級(jí)
- 一體化生態(tài)孕育下 寒武紀(jì)業(yè)績(jī)新增長(zhǎng)點(diǎn)已經(jīng)顯現(xiàn)
- 面板用光刻膠業(yè)務(wù)大幅提升,飛凱材料Q1營(yíng)收同比增53%
- 共達(dá)電聲今年Q1凈利潤(rùn)同比增615%,上半年凈利潤(rùn)預(yù)增1221%
- 完成LCD偏光片業(yè)務(wù)收購(gòu),杉杉股份Q1營(yíng)收同比增227%