【ZigBee JN5189】底层驱动之 SPI 处理机制

关键字 :ZigBeeJN5189

       最近调试 NXP JN5189 SPI 底层驱动的时候,学到了一种处理机制。故记录下来,以便大家相互学习。

一、SPI 内存映射、管脚分配及硬件结构

       JN5189 有两组 SPI,分别为 SPI0 基地址 0x4008_D000、SPI1 基地址 0x4008_E000.对应管脚分配如下图。
   
                            

二、软件实现机制

       以 SDK_2.x_JN5189 2.6.0 Driver 中的 jn5189dk6_spi_polling_transfer 为例:

       1、进行 Master SPI1 的初始化,注意片选的选择和设置,不同 EXAMPLE_SPI_SSEL 设置对应不同 GPIO 。
         

      2、进行 Slave SPI0 的初始化,初始化完成后并创建了与 SPI0 关联的句柄和回调函数,详见如下:
        

      3、函数 SPI_SlaveTransferCreateHandle 调用了 SPI_MasterTransferCreateHandle 。SPI_MasterTransferCreateHandle 又调用了 FLEXCOMM_SetIRQHandler,


FLEXCOMM_SetIRQHandler 中设置 SPI_SlaveTransferHandleIRQ 回调函数,该回调函数将 SPI0 的基地址和设置的句柄关联起来并处理接收的数据。 同时 SPI_Master
TransferCreateHandle  将用户设备的 slaveCallback 和创建的句柄关联起来并使能接收中断,如下图:

      4、以上设置好后,Master SPI1 调用  SPI_MasterTransferBlocking 函数进行数据发送,Slave SPI0 一旦有接收到 Master SPI1 数据,将会进入相应的 FLEXCOMMX_DriverIRQHandler 处理函数,如下:
    

以上实现了 SPI 的回调机制,整个设计思路十分清晰,而且实用,非常值得认真学习。

三、ESP-12S 参考资料

      UM11138.pdf   JN5189(T)/JN5188(T) User Manual

      参考网址:  https://www.nxp.com/products/wireless/thread/jn5189-88-t-high-performance-and-ultra-low-power-mcus-for-zigbee-and-thread-with-built-in-nfc-option:JN5189_88_T?tab=Documentation_Tab



★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论