最近有点忙,加上52840一直没有玩转,就很久没发帖了。打开nordic的sdk包的nRF5_SDK_15.2.0_9412b96\examples\nfc\nfc_uart\tag文件,通过mdk或者nrf的segger IDE工具查看编译源码。
下面看源代码:
nrf的程序很有意思,他把判断等待和其他函数整合在一起,这会比较容易读,但是写这程序就比较难了,很容易顺序就出错导致程序有问题。另外,他家的函数,总是封装再封装,一个同样的函数可能表现出来的有好几种名称。
1,2是设置NFC,也就是初始化NFC的功能,但是SDK下的源码这两个函数是不存在的,导致读取到的NFC一直无数据,就是这个浪费了我好多天。
3处的代码是读取NFC块的数据存放到一个地址之中,函数是对get的一个封装,从参数看就是指向NFC的接收区。
4处,只是把fifo_put封装成指向uart,可以理解成就是一个串口输出函数
5,6是3,4的反向输出,从uart读取,NFC输出
- uint32_t app_fifo_put(app_fifo_t * p_fifo, uint8_t byte)
- {
- if (FIFO_LENGTH() <= p_fifo->buf_size_mask)
- {
- fifo_put(p_fifo, byte);
- return NRF_SUCCESS;
- }
- return NRF_ERROR_NO_MEM;
- }
这代码是不是和上面的差不多。
把52840的nfc线圈插入,用pn532读取,由于没有初始化成功(我是这么觉得),导致读出来的NFC块全是0,另外tag历程是无法用532写入的,只能读取,数据只能靠程序中配置,通过NFC读取。
第一次玩nrf系类芯片,可能有很多错的地方希望大佬能指正