Tool/software: Code Composer Studio
Hi,
I'm using msp430fr5848 with cp2102.
I'm implementing the function of communicating with PC(pyserial) using ftdi.
[ msp430fr5848 p2.5(uart tx), p2.6(uart rx) → ftdi(cp2102) → pc(pyserial) ]
The problem is when i send one byte(or more byte), 8th bit is always 1 at receiver side.
ex) msp430fr5848 send 0x01 --> pyserial receive 0x11
msp430fr5848 send 0x11 --> pyserial receive 0x91
Doess anyone experienced this kind of problem?
This is my code of msp430fr5848.
/*
* uca1_UART.c
*
* Created on: 2020. 7. 10.
* Author: youngjun
*/
#include "uca1_UART.h"
uint8_t RXData = 0, TXData = 0;
uint8_t initUart(void)
{
// set gpio to uart module
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P2, GPIO_PIN5 | GPIO_PIN6, GPIO_SECONDARY_MODULE_FUNCTION);
// Configure UART
EUSCI_A_UART_initParam param = { 0 };
param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;
param.clockPrescalar = 16;
param.firstModReg = 0;
param.secondModReg = 0x00;
param.parity = EUSCI_A_UART_NO_PARITY;
param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
param.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT;
param.uartMode = EUSCI_A_UART_MODE;
param.overSampling = EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION;
if (STATUS_FAIL == EUSCI_A_UART_init(EUSCI_A1_BASE, ¶m))
{
return 0;
}
EUSCI_A_UART_enable(EUSCI_A1_BASE);
EUSCI_A_UART_clearInterrupt(EUSCI_A1_BASE, EUSCI_A_UART_TRANSMIT_INTERRUPT | EUSCI_A_UART_RECEIVE_INTERRUPT);
EUSCI_A_UART_enableInterrupt(EUSCI_A1_BASE, EUSCI_A_UART_RECEIVE_INTERRUPT); // Enable interrupt
EUSCI_A_UART_enableInterrupt(EUSCI_A1_BASE, EUSCI_A_UART_TRANSMIT_INTERRUPT);
return 1;
}
uint8_t test = 0;
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
switch (UCA1IV)
{
case USCI_NONE:
break;
case USCI_UART_UCRXIFG:
RXData = EUSCI_A_UART_receiveData(EUSCI_A1_BASE);
break;
case USCI_UART_UCTXIFG:
EUSCI_A_UART_transmitData(EUSCI_A1_BASE, test++);
//EUSCI_A_UART_transmitBreak(EUSCI_A1_BASE);
if (test >= 255)
{
test = 0;
}
break;
case USCI_UART_UCSTTIFG:
break;
case USCI_UART_UCTXCPTIFG:
break;
}
}
This is my code of pyserial
self.serial_dev.port = port_info[KEY_DEV_PORT] # port[0].device
self.serial_dev.baudrate = 1000000
self.serial_dev.timeout = 0
self.serial_dev.parity = serial.PARITY_NONE
self.serial_dev.stopbits =serial.STOPBITS_ONE
self.serial_dev.rtscts =False
self.serial_dev._xonxoff = False
self.serial_dev.dsrdtr = False
self.serial_dev.bytesize = serial.EIGHTBITS
self.serial_dev.open()
Best regards,
Youngjun