工具/软件:Code Composer Studio
开发人员大家好、
我目前尝试将 MSP430FR2433 LaunchPad 设置为 TX 器件、以进行红外数据传输。 我想使用 eUSCI_A UART 的 IrDA 功能来发送数据。
我通常知道要在 SYSCFG1寄存器中设置哪些位来启用调制系统。 但是、我在设置时序和 eUSCI_A 本身方面不成功。 到目前为止、我所做的是基于系列用户指南(SLAU445)和 OutOfBox 示例:
IrDA 设置
void initGpio (void) { // P2.6作为输出 P2DIR |= BIT6; // P2.6作为主模块功能(UCA1TXD) P2SEL0 |= BIT6; } void initIrDA (void) { //启用 IrDA SYSCFG1 |= IREN; //禁用 eUSCI_A EUSCI_A_UART_DISABLE (EUSCI_A1_BASE); //设置 UCSWRST 位 // IrDA 编码器/解码器被启用 HWREG16 (EUSCI_A1_BASE + OFS_UCAxIRTCTL)|= UCIREN; //发送脉冲时钟源 BITCLK16 (16 * 1/16时钟分数) HWREG16 (EUSCI_A1_BASE + OFS_UCAxMCTLW)|= UCOS16; //过采样模式被启用 HWREG16 (EUSCI_A1_BASE + OFS_UCAxIRTCTL)|= UCIRTXCLK; //选择 BITCLK16 //发送脉冲长度3/16位周期(6个半时钟周期) //将 UCIRTXPLx 设置为5 HWREG16 (EUSCI_A1_BASE + OFS_UCAxIRTCTL)|= UCIRTXPL2 | UCIRTXPL0;// B101 /* eUSCI_A 的初始化*/ EUSCI_A_UART_initParam param ={0}; param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK; param.clockPrescalar = 8; param.firstModReg = 10; param.secondModReg = 247; param.parity = EUSCI_A_UART_NO_parity; param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST; param.numerofStopBits = EUSCI_A_UART_Oe_STOP_BIT; param.uartMode = EUSCI_A_UART_MODE; param.oversaming= EUSCI_A_UART_oversaming_BAUDRATE_generation; if (STATUS_FAIL = EUSCI_A_UART_INIT (EUSCI_A1_BASE、¶m)) { 返回; } //启用 eUSCI_A EUSCI_A_UART_ENABLE (EUSCI_A1_BASE); //清除 UCSWRST 位 }
我不确定的是一般计时。 我是否必须单独设置 Timer0_A3以及如何同步载波信号的 UART 传输和定时器?
根据用户指南中修改的图片、包络信号在 ASK 模式下确定是否将载波信号转发到输出。 但 UART 数据信号如何影响这一点? 它只是将包络信号反相、还是我在这里错了?
我希望您能回答这些问题、提前感谢您提供的任何提示。
此致、
Steffen