Nordic nRF5340 UART、TWI(I2C) 和 SPI 资源共享注意事项
1:在 nRF5340 上,具有相同实例号的 UART、TWI(I2C)和 SPI 外设共享相同的硬件资源,通常被称为“serial box”
- 不能同时使用具有相同 ID 的外设(例如,SPIM1、TWIM1 和 UARTE1)
- 应用程序核心支持多达 4 个串行接口,外加一个额外的快速 SPI(SPIM4)
https://devzone.nordicsemi.com/f/nordic-q-a/99766/shared-peripheral-resources/425846

2:外设实例化:
产品规格说明在实例化表中清楚地显示了这种共享关系:
https://docs.nordicsemi.com/bundle/ps_nrf5340/page/chapters/memory/appmem.html#ariaid-title3
ID 为 9 的外设共享资源:SPIM1/SPIS1/TWIM1/TWIS1/UARTE1
外设 ID 为 11 的设备共享资源:SPIM2/SPIS2/TWIM2/TWIS2/UARTE2
具有 ID 12 的外设共享资源:SPIM3/SPIS3/TWIM3/TWIS3/UARTE3
SPIM4(ID 10)是一个专用的高速 SPI,不共享资源
3:重要注意事项
3.1、禁用共享外设:在使用外设之前,必须禁用所有具有相同 ID 的其他外设https://docs.nordicsemi.com/bundle/ps_nrf5340/page/twis.html#ariaid-title2
3.2、禁用外围设备不会重置共享寄存器,因此必须显式配置所有相关寄存器,禁用与 TWI 从机具有相同 ID 的外设不会重置与 TWIS 共享的任何寄存器。因此,显式配置所有相关寄存器以确保 TWIS 正确运行非常重要
https://docs.nordicsemi.com/bundle/ps_nrf5340/page/twis.html#ariaid-title2
4:实际限制
这种共享意味着您可以同时激活最多 5 个串行接口:4 个可配置的串行接口(UART/SPI/TWI)+1 个专用的高速 SPI(SPIM4)
例如,如果您需要 3 个 UART、1 个 I2C 和 1 个 SPI,则需要实现资源共享,因为这将需要 5 个可配置的接口,但实际上只有 4 个可用
5:实现资源共享
如果您需要在具有相同 ID 的不同外围设备之间切换(例如,在 UART3 和 SPI3 之间),需要禁用一个外设后再启用另一个或者
直接使用 nrfx API,因为 Zephyr/NCS 不支持原生外设资源共享
当前 Zephyr/NCS 的驱动模型不支持外设资源共享。目前唯一的解决方案是在 dts 中禁用这些外设,并直接使用 nrfx API。使用 SPI3 和 UART3
https://devzone.nordicsemi.com/f/nordic-q-a/114454/using-spi3-and-uart3/501166
示例实现可在以下链接找到:https://github.com/nrfconnect/sdk-zephyr/tree/main/samples/boards/nrf/nrfx_prs
6:双核考虑因素
对于 nRF5340 的双核架构,请注意网络核心和应用核心具有独立的 SPI 外设,无法轻松共享引脚
https://devzone.nordicsemi.com/f/nordic-q-a/110486/can-nrf5340-network-core-and-application-core-share-spi-bus-pins?ReplyFilter=Answers&ReplySortBy=Answers&ReplySortOrder=Descending
浙公网安备 33010602011771号