123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 |
- //==================================================================
- //
- // Filename: mapp_433_pt4306.c
- // Description:
- //
- //------------------------------------------------------------------
- //
- // version:
- // data: 10:10am, 25.Api.2020, written by dwd
- // Description:
- //
- //------------------------------------------------------------------
- //==================================================================
- /*------------------------------------------------------------------------------
- * I N C L U D E
- *------------------------------------------------------------------------------*/
- //#include <string.h>
- #include "stm32f0xx.h"
- #include "general.h"
- #include "mapp_gpio.h"
- #include "main.h"
- #include "mapp_433_pt4306.h"
- #include "TSC2046_spi.h"
- #include "mapp_arm.h"
- #include "mapp_msg.h"
- /*------------------------------------------------------------------------------
- * D E F I N E
- *------------------------------------------------------------------------------*/
- #define RG_MAX_LEN 849
- /*------------------------------------------------------------------------------
- * S T R U C T
- *------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- * S T A T I C - V A R I A B L E S
- *------------------------------------------------------------------------------*/
- static VU16 s_vu16I2cPT4306TaskTmr = 0;
- T_Pt4306_STATE gt433pt4306state = P433_ON_RESET ;
- /*------------------------------------------------------------------------------
- * G L O B A L
- *------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- * P R O T O T Y P E
- *------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------*/
- void PT4306InitVal(void)
- {
- gt433pt4306state = P433_ON_RESET;
- }
- int TIM3_init(void)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_ICInitTypeDef TIM_ICInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
-
- //=================================
- NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- //=================================
-
- //TIM_DeInit(TIM1);
-
- //=================================
- TIM_TimeBaseStructure.TIM_Period =50; //设置自动重装载寄存器周期值初始值 F=1M/100=10KHz
- TIM_TimeBaseStructure.TIM_Prescaler =(48-1); //////48000000/48=1M
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
- TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; //重复计数设置
- TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //参数初始化
-
- /* Select the slave Mode: Reset Mode */
- // TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
- //TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable);
- // TIM_Cmd(TIM3, ENABLE);
-
- // TIM_ClearFlag(TIM1,TIM_FLAG_CC4); //清中断标志位
- // TIM_ITConfig(TIM3,TIM_IT_CC4,ENABLE); //允许CC4IE捕获中断
- TIM_ClearFlag(TIM3, TIM_FLAG_Update); // 清除溢出中断
- TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
- // TIM_ARRPreloadConfig(TIM1, ENABLE);
- TIM_Cmd(TIM3, ENABLE);
- //=================================
-
- return 1;
- }
- U32 bdatetest =0x55AA55;
- /* 0.1ms,50us*/
- void TIM3_IRQHandler(void)
- {
- static U16 flag=0;
- static U08 Hi_Bcnt =0;
- static U08 Lo_Bcnt =0;
- static U08 sendcnt =0;
-
-
- if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
- {
- //=========================================
- TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update);
- if (gtArm.CallState ==CALL_START){
- switch (gtArm.rf_stp)
- {
- case 0x80:
- // case 0x81:
- SE_433_O_H;
- flag ++;
- if (flag >2000) {
- flag =0;
- gtArm.rf_stp =0;
- }
- break;
- case 0:
- SE_433_O_L;
- flag ++;
- if (flag >180) {
- flag =0;
- gtArm.rf_stp++;
- bdatetest = gtTp.tf_X_Y_add;
- }
- break;
- case 1:
- SE_433_O_H;
- flag ++;
- if (bdatetest&0x1) {
- if (flag >7) {
- flag =0;
- gtArm.rf_stp++;
- }
- } else {
- if (flag >15) {
- flag =0;
- gtArm.rf_stp++;
- }
-
- }
- break;
- case 2:
- SE_433_O_L;
- flag ++;
- if (bdatetest&0x1) {
- if (flag >15) {
- flag =0;
- gtArm.rf_stp++;
- }
- } else {
- if (flag >7) {
- flag =0;
- gtArm.rf_stp++;
- }
-
- }
- break;
- case 3:
- bdatetest = bdatetest>>1;
- gtArm.count_Bit++;
- gtArm.rf_stp =1;
- if (gtArm.count_Bit >24) {
- gtArm.rf_stp =4;
- }
- break;
-
- case 4:
- SE_433_O_H;
- flag ++;
- if (flag >180) {
- flag =0;
- gtArm.rf_stp =0;
- gtArm.count_Bit =0;
- sendcnt++;
- if (sendcnt >4) {
- sendcnt =0;
- SE_433_O_L;
- gtArm.CallState = CALL_ACK;
- SE_POWER_ON;
- }
- }
-
- break;
-
- default:
- break;
- }
- //TIM_ITConfig(TIM3 , TIM_IT_Update, DISABLE);
- } else if (gtArm.CallState ==CALL_ACK){
- switch (gtArm.rf_stp)
- {
- case 0:
- if (!RE_433_DET) { //LO
- if (gtArm.count_Lead != 0xff ) {
- gtArm.count_Lead ++;
- }
- } else {
- if ((gtArm.count_Lead >=150) && (gtArm.count_Lead <=210)) { //180
- gtArm.count_Lead =0;
- gtArm.count_Data_Hi =0;
- gtArm.count_Data_Lo =0;
- gtArm.count_Bit =0;
- gtArm.rf_stp =1;
- } else {
- gtArm.count_Lead =0;
- gtArm.rf_stp =0;
- }
- }
- break;
- case 1:
- if (RE_433_DET) { //HI
- gtArm.count_Data_Hi ++;
- } else {
- if ((gtArm.count_Data_Hi >=3) && (gtArm.count_Data_Hi <=21)) { //16
- Hi_Bcnt = gtArm.count_Data_Hi;
- gtArm.count_Data_Hi =0;
- gtArm.rf_stp =2;
- } else {
- gtArm.count_Lead =0;
- gtArm.rf_stp =0;
- }
- }
- break;
- case 2:
- if (!RE_433_DET) { //LO
- gtArm.count_Data_Lo ++;
- } else {
- if ((gtArm.count_Data_Lo >=3) && (gtArm.count_Data_Lo <=21)) { //7
- Lo_Bcnt = gtArm.count_Data_Lo;
- gtArm.count_Data_Lo =0;
- gtArm.rf_stp =3;
- } else {
- gtArm.count_Lead =0;
- gtArm.rf_stp =0;
- }
- }
- break;
- case 3:
- if (Hi_Bcnt >Lo_Bcnt){
- gtArm.rf_bitdata[gtArm.enque][gtArm.count_Bit] =0;
- } else {
- gtArm.rf_bitdata[gtArm.enque][gtArm.count_Bit] =1;
- }
- gtArm.count_Bit ++;
- if (gtArm.count_Bit >23) {
- gtArm.count_Bit =0;
- gtArm.rf_stp =0;
- gtArm.decode_ok =1;
- gtArm.enque ++;
- if (gtArm.enque >9) {
- gtArm.enque =0;
- }
- } else
- {
- if (RE_433_DET) {
- gtArm.rf_stp =1;
- gtArm.count_Data_Hi ++;
- } else {
- gtArm.rf_stp =2;
- gtArm.count_Data_Lo ++;
- }
-
-
- }
-
- break;
-
- default:
- gtArm.rf_stp =0;
- gtArm.count_Lead =0;
- break;
- }
-
- }
- }
- }
-
- U08 u8PT4306regDate[10] = {0};
- //U16 u16testcnt = 0x2200;
- void PT4306_Tick(void)
- {
- static U08 u8cnt =0;
- switch (gt433pt4306state) {
- case P433_ON_RESET:
- s_vu16I2cPT4306TaskTmr = 0;
- u8cnt =0;
- gt433pt4306state ++;
- break;
- case P433_ON_INIT:
- if (s_vu16I2cPT4306TaskTmr < OS_TIMER_200MS) {
- break;
- }
- s_vu16I2cPT4306TaskTmr = 0;
- gt433pt4306state ++;
- break;
- case P433_ON_WAIT:
- if (s_vu16I2cPT4306TaskTmr < OS_TIMER_1S) {
- break;
- }
- s_vu16I2cPT4306TaskTmr = 0;
- gt433pt4306state ++;
-
- break;
- case P433_ON_STABLE:
- if (s_vu16I2cPT4306TaskTmr < OS_TIMER_200MS) {
- break;
- }
-
- s_vu16I2cPT4306TaskTmr =0;
-
- gt433pt4306state++;
- break;
- case P433_SYSTEM_RUN:
- if (s_vu16I2cPT4306TaskTmr < OS_TIMER_1S) {
- break;
- }
- s_vu16I2cPT4306TaskTmr =0;
- if (gtArm.decode_ok ==1) {
-
- }
-
- break;
- case P433_OFF_INIT:
- gt433pt4306state++;
- break;
- case P433_OFF_SLEEP:
-
- break;
- default:
- break;
- }
-
- }
- void PT4306TaskTmr(void)
- {
- if(s_vu16I2cPT4306TaskTmr!=0xffff)s_vu16I2cPT4306TaskTmr++;
- }
- /*=============================== END OF FILE ===============================*/
|