This commit is contained in:
lmx
2025-11-25 14:12:44 +08:00
parent 46d6aefc9b
commit 8f94aaaa17
56 changed files with 170611 additions and 174504 deletions

View File

@ -53,9 +53,9 @@
// 硬件SPI 配置 //
//*********************************************************************************//
#define TCFG_HW_SPI1_ENABLE 1
#define TCFG_HW_SPI1_PORT_CLK 0//IO_PORTC_04//IO_PORTA_00 xtellio
#define TCFG_HW_SPI1_PORT_CLK IO_PORTC_04//IO_PORTC_04//IO_PORTA_00 xtellio
#define TCFG_HW_SPI1_PORT_DO IO_PORTC_05//IO_PORTA_01
#define TCFG_HW_SPI1_PORT_DI 0//IO_PORTC_03//IO_PORTA_02 xtellio
#define TCFG_HW_SPI1_PORT_DI IO_PORTC_03//IO_PORTC_03//IO_PORTA_02 xtellio
#define TCFG_HW_SPI1_BAUD 2400000L
#define TCFG_HW_SPI1_MODE SPI_MODE_BIDIR_1BIT
#define TCFG_HW_SPI1_ROLE SPI_ROLE_MASTER

View File

@ -275,20 +275,17 @@ void rfid_task_fuc(void)
// rfid_hal_init();
FM176XX_HardInit();
// 2. 复位 FM176XX 芯片
while (1)
result = FM176XX_SoftReset();
if (result != SUCCESS)
{
result = FM176XX_SoftReset();
if (result != SUCCESS)
{
xlog("FM176XX HardReset FAIL\r\n");
rfid_delay_ms(1000); // 延时后重试
}
else
{
xlog("FM176XX HardReset SUCCESS\r\n");
break;
}
xlog("FM176XX HardReset FAIL\r\n");
}
else
{
xlog("FM176XX HardReset SUCCESS\r\n");
}
}
@ -296,8 +293,8 @@ void rfid_task_fuc(void)
GetReg(REG_VERSION, &reg_data);
xlog("REG_VERSION = %02X\r\n", reg_data);
TYPE_A_EVENT();
TYPE_B_EVENT();
// TYPE_A_EVENT();
// TYPE_B_EVENT();
TYPE_V_EVENT();
TYPE_F_EVENT();
// TYPE_F_EVENT();
}

View File

@ -2,6 +2,7 @@
#include "gSensor/gSensor_manage.h"
#include "./include/rfid_main.h"
#include "./include/READER_REG.h"
#include "asm/spi.h"
#define FUN_ENABLE_XLOG 1
#ifdef xlog
@ -13,7 +14,7 @@
#define xlog(format, ...) ((void)0)
#endif
#define INTERFACE_TYPE 0
#define INTERFACE_TYPE 1
//////////////////////////////////////////////////////////////////////////////////////////////////
//
@ -26,7 +27,7 @@
1 0 0x2A
1 1 0x2B
*/
#define FM176_7BIT_ADDR 0x28 //后两位地址由IF2、IF1决定
#define FM176_7BIT_ADDR 0x2A //后两位地址由IF2、IF1决定
#define FM176_READ_ADDR (FM176_7BIT_ADDR << 1)
#define FM176_WRITE_ADDR ((FM176_7BIT_ADDR << 1) | 0x01)
@ -81,6 +82,81 @@ unsigned char FM176XX_SoftReset(void){
#elif INTERFACE_TYPE == 1 //spi
unsigned char FM176XX_HardInit(void){
spi_open(SPI1); //初始化spi1PC3、PC5
return SUCCESS;
}
/**
* @brief 从FM176XX芯片读取一个字节的寄存器值。
* @param address [in] 目标寄存器的地址。
* @param reg_data [out] 指向用于存储读取数据的字节的指针。
* @return 操作状态SUCCESS表示成功。
* @details
* 接口SPI
*/
unsigned char GetReg(unsigned char address, unsigned char *reg_data){
unsigned char addr_byte;
int err;
// 准备地址字节地址左移1位Bit0置1表示读
addr_byte = (address << 1) | 0x01;
// ---- 开始SPI事务 ----
// gpio_set_output_value(FM176XX_CS_PIN, 0); // 拉低CS
// 1. 发送地址字节,忽略接收到的数据
spi_send_byte(SPI1, addr_byte);
// 2. 接收数据字节 (通过发送一个Dummy Byte 0xFF 来产生时钟)
*reg_data = spi_recv_byte(SPI1, &err);
// ---- 结束SPI事务 ----
// gpio_set_output_value(FM176XX_CS_PIN, 1); // 拉高CS
if (err != 0) {
xlog("GetReg error\n");
return FAIL;
}
return SUCCESS;
}
/**
* @brief 向FM176XX芯片写入一个字节的寄存器值。
* @param address [in] 目标寄存器的地址。
* @param reg_data [in] 要写入的字节数据。
* @return 操作状态SUCCESS表示成功。
* @details
* 接口SPI
*/
unsigned char SetReg(unsigned char address, unsigned char reg_data){
unsigned char spi_data = (address << 1) & 0xFE;
if(spi_send_byte(SPI1, spi_data) != 0){
xlog("SetReg error 0\n");
return FAIL;
}
if(spi_send_byte(SPI1, reg_data) != 0){
xlog("SetReg error 1\n");
return FAIL;
}
return SUCCESS;
}
/**
* @brief 软件复位命令0x1F
*
* @return unsigned char
*/
unsigned char FM176XX_SoftReset(void){
return SetReg(REG_COMMAND, 0x1F);
}
#elif INTERFACE_TYPE == 2 //uart
#endif