JN5168的SPI使用
前言
在使用NXP的这狂JN5168芯片时,使用它的一些外围接口总是用的有点懵,网上的资料又特别小,毕竟是一款比较
小众的芯片。在使用SPI的时候,需要复用SPI引脚,因为该芯片只有一个SPI接口。因此写下一些调试心得。
实际使用
在使用时,需要用一组## 标题SPI口先驱动AS3933,配置完成后,继续用SPI口来驱动另外一个芯片.
上面两个图片表示了口线的复用以及SPI的复用规则,我们这里选择的是CS0接DW1000以及CS2接AS3933。
如何插入一段漂亮的代码片
#define CS_DEV 2 //片选线2
#define CS_ENABLE_MASK (1 << CS_DEV) /*active the appropriate bit for CS line DIO1*/
vAHI_SpiConfigure(CS_DEV, E_SPI_MSB_FIRST, E_AHI_SPIM_TXPOS_EDGE, E_AHI_SPIM_RXNEG_EDGE, E_SPI_CLOCK_2M, FALSE, FALSE);
//vAHI_SpiRegisterCallback(SPIReceiveinterrupt);
vAHI_SpiSelSetLocation(E_AHI_SPISEL_2,FALSE);
vAHI_SpiSelect(CS_ENABLE_MASK);
这是配置片选2,也是AS3933的引脚,配置完这个之后就可以往AS3933传输信息。
vAHI_DioSetDirection(0,E_AHI_DIO1_INT);
vAHI_DioSetOutput(0,E_AHI_DIO1_INT); //复用完DIO1,需要配置成普通IO口
非常重要的一点,就是复用完之后要配置成普通IO口,不然到时在用另外一个的使用,会有干扰,导致一些错误。
vAHI_SpiSelect(0); //拉高片选
vAHI_SpiStartTransfer(0xf,(uint32)sendvalue);
vAHI_SpiWaitBusy();
readvalue=(uint16)u16AHI_SpiReadTransfer16();
vAHI_SpiSelect(CS_ENABLE_MASK); //拉低片选
SPI的时序生成上面的代码可以看出。