请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R
我正在尝试与一个小型 ESP8266芯片进行 WiFi 通信、该芯片设置为以9600波特通过串行方式接收信息。 我过去曾让该 UART 正常工作、但自从移植到新项目后、我遇到了问题、无法将正确的数据流式传输到 ESP8266、以便发送其请求。 我已经对 ESP 进行了广泛的调试、认为它不会导致问题的发生。
我觉得 MSP432上的 UART 时钟设置有误、但我无法分辨为什么? 我使用了12MHz SMCLK 的 TI 计算器来确定 UART 的参数:
const eUSCI_UART_Config uartConfig = { EUSCI_A_UART_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源 78、 // BRDIV = 72 2、 // UCxBRF = 2 0、 // UCxBRS = 0 EUSCI_A_UART_NO_奇 偶校验、 //无奇偶校验 EUSCI_A_UART_LSB_FIRST、 // MSB 优先 EUSCI_A_UART_One_stop_bit、 //一个停止位 EUSCI_A_UART_MODE、 // UART 模式 EUSCI_A_UART_oversampling_BAUDRATE_generation //过采样 };
然后我初始化时钟系统。 我认为这是我的问题所在、但我很难确定此代码有什么问题:
MAP_CS_setExternalClockSourceFrequency (32768、4800000); MAP_CS_startHFXT (false); MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_SELECT、CS_CLOCK_DEVIDER_1); MAP_CS_initClockSignal (CS_HSMCLK、CS_DCOCLK_SELECT、CS_CLOCK_DIVIDER_1); MAP_CS_initClockSignal (CS_SMCLK、CS_DCOCLK_SELECT、CS_CLOCK _DIVIDER_1);用于 UART 的//SMCLK -时钟分频器4 = 12MHz MAP_CS_initClockSignal (CS_ACLK、CS_HFXTCLK_SELECT、CS_CLOCK_DEVIDER_1); MAP_CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY);//DCO 时钟内部-需要?
我第一次尝试使用 CS_HFXTCLK_SELECT 、SMCLK 分频器为4、但这不起作用。 然后、我决定尝试使用 DCO 作为 SMCLK 的源、并将其设置为12MHz。 这也不起作用。
最后、我启用 UART 的方法如下:
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、 GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION); /*配置 UART 模块*/ UART_initModule (EUSCI_A2_base、uartConfig); /*启用 UART 模块*/ UART_enableModule (USCI_A2_base);
有人能帮我找出问题所在吗? 我已经为此付出了一段时间的努力、似乎无法弄清代码的错误。 谢谢!