FL-176 LF RFID RX (#248)

* pulldown ibutton pin during rfid read
* enable and handle COMP interrupts
* send events from comparator IRQ and handle in app
* manchester encode
* successfully read em4100
* read-emulate
* led
This commit is contained in:
coreglitch
2020-11-19 14:11:03 +03:00
committed by GitHub
parent 27ae2a8fa9
commit ccd40497eb
7 changed files with 288 additions and 58 deletions

View File

@@ -56,6 +56,7 @@ void DebugMon_Handler(void);
void EXTI1_IRQHandler(void);
void EXTI2_IRQHandler(void);
void USB_LP_IRQHandler(void);
void COMP_IRQHandler(void);
void EXTI9_5_IRQHandler(void);
void TIM1_TRG_COM_TIM17_IRQHandler(void);
void TIM2_IRQHandler(void);

View File

@@ -31,14 +31,14 @@ void MX_COMP1_Init(void)
{
hcomp1.Instance = COMP1;
hcomp1.Init.InputMinus = COMP_INPUT_MINUS_1_2VREFINT;
hcomp1.Init.InputMinus = COMP_INPUT_MINUS_1_4VREFINT;
hcomp1.Init.InputPlus = COMP_INPUT_PLUS_IO1;
hcomp1.Init.OutputPol = COMP_OUTPUTPOL_NONINVERTED;
hcomp1.Init.Hysteresis = COMP_HYSTERESIS_NONE;
hcomp1.Init.Hysteresis = COMP_HYSTERESIS_HIGH;
hcomp1.Init.BlankingSrce = COMP_BLANKINGSRC_NONE;
hcomp1.Init.Mode = COMP_POWERMODE_HIGHSPEED;
hcomp1.Init.Mode = COMP_POWERMODE_MEDIUMSPEED;
hcomp1.Init.WindowMode = COMP_WINDOWMODE_DISABLE;
hcomp1.Init.TriggerMode = COMP_TRIGGERMODE_NONE;
hcomp1.Init.TriggerMode = COMP_TRIGGERMODE_IT_RISING_FALLING;
if (HAL_COMP_Init(&hcomp1) != HAL_OK)
{
Error_Handler();
@@ -65,6 +65,9 @@ void HAL_COMP_MspInit(COMP_HandleTypeDef* compHandle)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(RFID_RF_IN_GPIO_Port, &GPIO_InitStruct);
/* COMP1 interrupt Init */
HAL_NVIC_SetPriority(COMP_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(COMP_IRQn);
/* USER CODE BEGIN COMP1_MspInit 1 */
/* USER CODE END COMP1_MspInit 1 */
@@ -85,6 +88,8 @@ void HAL_COMP_MspDeInit(COMP_HandleTypeDef* compHandle)
*/
HAL_GPIO_DeInit(RFID_RF_IN_GPIO_Port, RFID_RF_IN_Pin);
/* COMP1 interrupt Deinit */
HAL_NVIC_DisableIRQ(COMP_IRQn);
/* USER CODE BEGIN COMP1_MspDeInit 1 */
/* USER CODE END COMP1_MspDeInit 1 */

View File

@@ -19,7 +19,6 @@
/* Includes ------------------------------------------------------------------*/
#include "spi.h"
#include "cmsis_os.h"
/* USER CODE BEGIN 0 */
void Enable_SPI(SPI_HandleTypeDef* spi);

View File

@@ -57,6 +57,7 @@
/* External variables --------------------------------------------------------*/
extern PCD_HandleTypeDef hpcd_USB_FS;
extern COMP_HandleTypeDef hcomp1;
extern TIM_HandleTypeDef htim1;
extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim17;
@@ -206,6 +207,20 @@ void USB_LP_IRQHandler(void)
/* USER CODE END USB_LP_IRQn 1 */
}
/**
* @brief This function handles COMP1 and COMP2 interrupts through EXTI lines 20 and 21.
*/
void COMP_IRQHandler(void)
{
/* USER CODE BEGIN COMP_IRQn 0 */
/* USER CODE END COMP_IRQn 0 */
HAL_COMP_IRQHandler(&hcomp1);
/* USER CODE BEGIN COMP_IRQn 1 */
/* USER CODE END COMP_IRQn 1 */
}
/**
* @brief This function handles EXTI line[9:5] interrupts.
*/

View File

@@ -17,8 +17,10 @@ VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled
RCC.RTCFreq_Value=32768
PA3.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP
PA6.GPIO_Label=PA6
COMP1.Hysteresis=COMP_HYSTERESIS_HIGH
PD0.Locked=true
PC5.Mode=INP
VP_COMP1_VS_VREFINT14.Signal=COMP1_VS_VREFINT14
USART1.IPParameters=VirtualMode-Asynchronous
PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PB13.Signal=TIM1_CH1N
@@ -37,6 +39,7 @@ SPI1.Direction=SPI_DIRECTION_2LINES
TIM2.IPParameters=Channel-Input_Capture1_from_TI1,ICPolarity_CH1,AutoReloadPreload,Prescaler,Channel-Input_Capture2_from_TI1
RCC.APB2TimFreq_Value=64000000
PCC.Ble.PowerLevel=Min
COMP1.Mode=COMP_POWERMODE_MEDIUMSPEED
PB6.Signal=USART1_TX
PB6.Mode=Asynchronous
SPI1.CalculateBaudRate=4.0 MBits/s
@@ -175,7 +178,7 @@ Mcu.Pin50=PB6
Mcu.Pin55=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin56=VP_HSEM_VS_HSEM
Mcu.Pin53=VP_ADC1_Vref_Input
Mcu.Pin54=VP_COMP1_VS_VREFINT12
Mcu.Pin54=VP_COMP1_VS_VREFINT14
PC6.Locked=true
PA9.Signal=I2C1_SCL
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
@@ -216,6 +219,7 @@ RCC.RNGFreq_Value=32000
PC2.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input
Mcu.Pin30=PE4
NVIC.COMP_IRQn=true\:5\:0\:true\:false\:true\:false\:false\:true
PA1.GPIO_Label=LED_RED
Mcu.Pin33=PB14
Mcu.Pin34=PB15
@@ -312,7 +316,6 @@ PA11.Mode=Device
PB0.GPIO_Label=DISPLAY_RST
VP_RTC_VS_RTC_Calendar.Signal=RTC_VS_RTC_Calendar
PB11.GPIO_PuPd=GPIO_PULLUP
VP_COMP1_VS_VREFINT12.Signal=COMP1_VS_VREFINT12
PC13.GPIO_Label=BUTTON_BACK
PB13.GPIO_Label=RFID_OUT
PB11.Signal=GPXTI11
@@ -401,7 +404,6 @@ PE4.Signal=GPIO_Output
PB0.Locked=true
FREERTOS.configTOTAL_HEAP_SIZE=40960
PC14-OSC32_IN.GPIOParameters=GPIO_Label
VP_COMP1_VS_VREFINT12.Mode=VREFINT_12
ProjectManager.ProjectName=f3
RCC.APB3Freq_Value=16000000
PA6.Signal=GPIO_Analog
@@ -426,6 +428,7 @@ OSC_IN.GPIO_Label=QUARTZ_32KHZ_IN
PC2.GPIO_Label=BUTTON_OK
PC14-OSC32_IN.Locked=true
PA12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
COMP1.TriggerMode=COMP_TRIGGERMODE_IT_RISING_FALLING
PB15.Locked=true
PB3.Locked=true
PB4.Signal=SPI1_MISO
@@ -463,6 +466,7 @@ PC12.GPIOParameters=GPIO_Speed,PinState,GPIO_Label
USART1.VirtualMode-Asynchronous=VM_ASYNC
PA13.Signal=SYS_JTMS-SWDIO
FREERTOS.configUSE_IDLE_HOOK=1
VP_COMP1_VS_VREFINT14.Mode=VREFINT_14
PA9.Mode=I2C
TIM1.Channel-Output\ Compare1\ CH1N=TIM_CHANNEL_1
FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1
@@ -492,6 +496,7 @@ TIM16.Period=291
NVIC.SavedSystickIrqHandlerGenerated=true
RCC.APB2Freq_Value=64000000
PC11.PinState=GPIO_PIN_SET
COMP1.IPParameters=TriggerMode,Hysteresis,Mode
MxCube.Version=6.0.1
VP_TIM2_VS_ClockSourceINT.Mode=Internal
PC13.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI