Hi,
We are using a i.MX8MN (MIMX8MN1DVPIZAA) along with an Azurewave (AW-CM358SM) WIFI/BT module (based on the NXP 88W8987). When we increase the BT baud rate to 3Mbps, we get about a 5% failure rate to bring the HCI interface back up at the higher baud. We never have any failures brining the HCI interface up at the default 115200 bps.
The application engineer at Azurewave mentioned that we should configure the UART interface in DTE mode. When I configure for DTE mode, nothing works. We can only communicate with the BT if the UART is in the default DCE mode. From further reading, I believe the Azurewave engineer might be correct, as I think RTS/CTS handshaking is designed for DTE mode. In fact, when I'm configured in DCE mode, I never see the handshaking lines change state, which is maybe why the higher rate fails?
Our design is based on the i.MX8M NANO DD3 EVK (8MNANOD3L-EVK) board. Wired almost identical to that board. I believe that board also configures the UART to DCE mode.
Here is how I have our DTS file configured for DTE mode:
&uart1 { /* BT */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
assigned-clocks = <&clk IMX8MN_CLK_UART1>;
assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_80M>;
fsl,dte-mode;
fsl,uart-has-rtscts;
resets = <&modem_reset>;
status = "okay";
};
pinctrl_uart1: uart1grp {
fsl,pins = <
MX8MN_IOMUXC_UART1_RXD_UART1_DTE_TX 0x140
MX8MN_IOMUXC_UART1_TXD_UART1_DTE_RX 0x140
MX8MN_IOMUXC_UART3_RXD_UART1_DTE_RTS_B 0x140
MX8MN_IOMUXC_UART3_TXD_UART1_DTE_CTS_B 0x140
>;
};
/*
pinctrl_uart1: uart1grp {
fsl,pins = <
MX8MN_IOMUXC_UART1_RXD_UART1_DCE_RX 0x140
MX8MN_IOMUXC_UART1_TXD_UART1_DCE_TX 0x140
MX8MN_IOMUXC_UART3_RXD_UART1_DCE_CTS_B 0x140
MX8MN_IOMUXC_UART3_TXD_UART1_DCE_RTS_B 0x140
>;
};
*/
If anyone has any insight to configuring the BT interface to to allow it reliably to operate at the 3Mbps rate, please let me know.
Thanks!