Thread 中讨论的其他器件:CC1352P、 Z-stack
工具与软件:
您好!
我要在 Sonoff Zigbee 记忆棒上启用硬件流控制、该记忆棒已布设这些线缆(通过开关)。 我想,应该容易,对吗? 我从 ZNP 示例中删除/禁用了 XGS110、并将其替换为正常的 UART2。 然而、令人遗憾的是、启用流控制并未产生实际的功能流控制。 一切都和以前一样。 那么、我想、让我们更改波特率、这应该起作用? 但可惜,通信仍然在115200。 我的 UART 是否也在使用? 肯定地交换(TX -> CTS、RX -> RTS)引脚会导致非正常通信。 焊盘设置可正常工作、多路复用器设置可正常工作、只是流控制或波特率不会改变。
这是我与常规 ZNP.syscfg 相比的 diff
```dIF
diff -u --color znp.syscfg ../../coordinator/Z-Stack_3.x.0/znp_CC1352P_2_LAUNCHXL.syscfg 2024年08月17日22:11:36 [0]
-- znp.syscfg 2024年08月17日22:10:34.160240772+0200
++../../coordinator/Z-Stack_3.x.0/znp_CC1352P_2_LAUNCHXL.syscfg 2024年08月17日21:35:53.842245876+0200
@@-11、7 + 11、7 @@μ s
*/
const CCFG = scripting.AddModule ("/ti/devices/CCFG);
const rfdesign = scripting.AddModule ("/ti/devices/radioconfig/rfdesign);
-const Display = scripting.AddModule ("AddModule"/ti/display/Display、{}、false);
+const Display = scripting.AddModule ("/ti/display/Display);
const Display1 = Display.addInstance();
const AESCBC = scripting.AddModule ("/ti/drivers/AESCBC);
const AESCBC1 = AESCBC.addInstance();
@@-73、17 + 73、12 @@μ s
rfdesign.rfDesign ="LAUNCHXL-CC1352P-2";
-Display1.$name ="config_display";
-Display1.baudrate = 57600;
-Display1.uart.$name ="CONFIG_DISPLAY_UART";
-Display1.UART.FlowControl = true;
-Display1.UART.UART.$ASSIGN ="UART0";
-Display1.UART.UART.txPin.$assign ="BoosterPack.4";
-Display1.UART.UART.rxPin.$assign ="BoosterPack.3";
-Display1.UART.UART.ctsPin.$assign ="BoosterPack.19";
-Display1.UART.UART.rtsPin.$assign ="BoosterPack.36";
-scripting.suppress ("已连接到硬件、@@@…+?@@@已连接到 CC1352P-2 LaunchPad\\上的 XDS110 UART。 请考虑在上面的"使用硬件"中选择它。 @@@.+?@@@"、Display1.UART.UART、"txPin");
-scripting.suppress ("已连接到硬件、@@@…+?@@@已连接到 CC1352P-2 LaunchPad\\上的 XDS110 UART。 请考虑在上面的"使用硬件"中选择它。 @@@.+?@@@"、Display1.UART.UART、"rxPin");
+Display1.$hardware = system.deviceData.board.components.XDS110UART;
+Display1.$name ="config_display";
+Display1.uart.$name ="CONFIG_DISPLAY_UART";
+Display1.UART.UART.$ASSIGN ="UART0";
+Display1.UART.UART.txPin.$ASSIGN ="BoosterPack.4";
+Display1.UART.UART.rxPin.$assign ="BoosterPack.3";
AESCBC1.$name ="CONFIG_AESCBC_0";
```μ A
不确定第一项更改是关于什么、但 UART 配置看起来正确吗? 这是我的完整 ZNP.sysfg `github.com/.../znp_CC1352P_2_hwfc.syscfg`
如果我查看`ti_drivers_config.c`我还会看到配置了重要位。
```C
const DisplayUart2_HWAttrs displayUart2HWAttrs ={
.uartIdx = CONFIG_DISPLAY_UART、
.baudrate = 57600、
.mutexTimeout =(unsigned int)(-1)、
.strBuf = displayUART2缓冲器、
.strBufLen = Display_UART2BUFFERSIZE
};
...
静态 const UART2CC26X2_HWAttrs uart2CC26X2HWAttrs[CONFIG_UART2_COUNT]={
{
baseAddr = UART0_BASE、
.intNum = INT_UART0_COMB
.intPriority =(~0)、
.rxPin = CONFIG_GPIO_DISPLAY_UART_RX、
.txPin = CONFIG_GPIO_DISPLAY_UART_TX、
.ctsPin = CONFIG_GPIO_DISPLAY_UART_CTS、
rtsPin = CONFIG_GPIO_DISPLAY_UART_RTS、
.FlowControl = UART2_FLOWCTRL_hardware、
.powerId = PowerCC26XX_PERIPH_UART0、
.rxBufPtr = uart2RxRingBuffer0、
.rxBufSize = sizeof (uart2RxRingBuffer0)、
.txBufPtr = uart2TxRingBuffer0、
.txBufSize = sizeof (uart2TxRingBuffer0)、
.txPinMux = IOC_PORT_MCU_UART0_TX、
.rxPinMux = IOC_PORT_MCU_UART0_RX、
.ctsPinMux = IOC_PORT_MCU_UART0_CTS、
.rtsPinMux = IOC_PORT_MCU_UART0_RTS、
.dmaTxTableEntryPri =&dmaUart0TxControlTableEntry
.dmaRxTableEntryPri =&dmaUart0RxControlTableEntry、
.rxChannelMask = 1 << UDMA_CHAN_UART0_RX、
.txChannelMask = 1 << UDMA_CHAN_UART0_TX、
.txIntFifoThr = UART2CC26X2_FIFO_THRESHOLD_1_8、
.rxIntFifoThr = UART2CC26X2_FIFO_THRESHOLD_4_8
}、
};
```μ A
除了名称之外、我都看不到 UART2与显示器有什么关系;但是、由于波特率是显示器的一部分、引脚多路复用器是 UART 的一部分、因此我很高兴地认为这只是正常工作(TM)。 同时调查代码,没有什么明显的事情没有传递到 uart2驱动程序。
我已经进行了很多次设置(rm -rf 工作区、导入、配置、构建)、因此不是很遗憾未清除对象。