在arduino 2560上移植了ST25R3911 NFC读卡器,中间遇到几个问题,记录一下
1、ST25R3911 通信使用的SPI模式 对于arduino 是mode1,MSB在前模式(默认的)
SPI.setDataMode(SPI_MODE1);
SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI中有四种操作模式,如下所示:
模式0(默认值) - 时钟通常为低电平(CPOL = 0),数据在从低电平到高电平(前沿)(CPHA = 0)的转换时采样。
模式1 - 时钟通常为低电平(CPOL = 0),数据在从高电平到低电平(后沿)(CPHA = 1)的转换时采样。
模式2 - 时钟通常为高电平(CPOL = 1),数据在从高电平到低电平(前沿)(CPHA = 0)的转换时采样。
模式3 - 时钟通常为高电平(CPOL = 1),数据在从低电平到高电平(后沿)(CPHA = 1)的转换时采样。
重点: 1发送数据是大端在前 2下降沿采集 3 SCLK正常为低
所以 arduino 应该选择 MODE1
2、函数带结构参数修改
比如
ReturnCode iso15693PhyConfigure( iso15693PhyConfig_t * configs, const iso15693StreamConfig ** needed_stream_config )
修改为:
ReturnCode iso15693PhyConfigure(struct iso15693PhyConfig_t * configs, const struct iso15693StreamConfig ** needed_stream_config )
否则报结构体不认识
3、结构体声明修改
/*! Struct for Analog Config Look Up Table Update */
typedef struct {
uint8_t *currentAnalogConfigTbl; /*!< Reference to start of current Analog Configuration */
uint16_t configTblSize; /*!< Total size of Analog Configuration */
uint8_t ready; /*!< Indicate if Look Up Table is complete and ready for use */
} rfalAnalogConfigMgmt;
修改为
struct rfalAnalogConfigMgmt {
uint8_t *currentAnalogConfigTbl; /*!< Reference to start of current Analog Configuration */
uint16_t configTblSize; /*!< Total size of Analog Configuration */
uint8_t ready; /*!< Indicate if Look Up Table is complete and ready for use */
} ;
否则报错,rfalAnalogConfigMgmt 结构不认识