Other Parts Discussed in Thread: CC3135
器件型号:MSP432P4111
您好!
设置:
版本:
- simplelink_msp432p4_sdk_3_30_00_13
- simplelink_sdk_wifi 插件_2_40_00_22
- FreeRTOSv10.2.1
- CCS 9.0.1.00004
我有一个项目、它包含使用多处理器 UART 进行相互通信的多个板。
所有这些电路板上都有 MSP432P4111。
FreeRTOS 用作不带 POSIX 层的操作系统。
外设通过 driverlib API 使用。
有1个主板通过 UART 依次向所有其他板发送各种查询。
每个电路板都通过 UART 逐一响应。
在主板(也在其他主板上)上、DMA 通道用于逐个接收字节并将其存储在 StreamBuffer_t (来自 FreeRTOS)中
每当 DMA 完成对1个字节的读取时、就会触发中断。
在此中断处理程序中、使用 StreamBuffer_t 的"xStreamBufferSendFromISR"方法发送接收到的字节、然后使用相同的设置重新启用 DMA (从 UARTRX 接收1个字节)
此设置工作正常、没有问题。
问题:
但是、我必须为其添加无线连接。
我选择了 CC3135 BOOSTXL 板。
通过查看 MSP432的示例、可以看到它们使用 SPI TI 驱动程序与 CC 板进行通信。
我已决定将我的 driverlib 实现迁移到 TI 驱动程序、以使整个应用在 TI 器件之间至少具有一点跨平台性、此外、我还计划使用各种策略尽可能提高应用的功效。
我的问题是:
据我所知、无法通过 driverlib 以我使用的方式设置 UART:
TI 驱动程序实现完全缺少多处理器 API
我已经解决了这一问题、方法是使用 CS 引脚分别在所需电路板上启用和打开 UART、然后在所有数据交换完成后将其关闭。
2.由于能够使用 DMA、无法找到从 UART 连续读取的方法、因为:
我最近来的是为 UART 设置一个读取回调、并准备接收1个字节、并且计划在每次接收和处理一个字节时执行此操作、但文档警告我不能从其自身的回调函数调用 UART_Read():
*@警告在 *#UART_MODE_CALLACK 中时、不要从自己的回调函数调用%UART_READ()。
此时、我看不出如何实现与 UART + DMA 相同的功能(接收一个字节、处理它、准备另一个字节<-中断处理程序中的所有这些)
现在、我有机会将 driverlib 实现方式保留原样、不要在 TI 驱动程序设置中触及 EUSCI 外设、但从长远来看、我不想使用权变措施、而且从经验中我也知道、 通过 driverlib 使用外设并使用 TI 驱动程序的省电功能(我计划使用该功能)会导致问题。
因此、我需要的是使用 TI 驱动程序实现与使用 driverlib 相同的 UART 功能
请提供任何帮助。
注:
我需要从 UART 逐字节读取、因为不同的请求和响应具有不同的长度。
逐字节读取确保了我始终将所有板的所有内容接收到同一个缓冲区中、该缓冲区将在以后处理、而不会阻止调用、也不会进行任何超时处理。
谢谢、
Akos