工具/软件:TI C/C++编译器
我 使用 MSP430F169采集 具有内部 A/D 的阴道并通过 USART0进行传输。 当晶振为8M 时、波特率是否可以达到115200以上?
我收到数据、发现数据错误。
信号频率介于100Hz 至3000Hz 之间。
您能不能推荐 另一个 MSP430来帮助我实现信号收集和传输的功能。 A/D 的频率高于12位、波特率高于1M。
谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
我 使用 MSP430F169采集 具有内部 A/D 的阴道并通过 USART0进行传输。 当晶振为8M 时、波特率是否可以达到115200以上?
我收到数据、发现数据错误。
信号频率介于100Hz 至3000Hz 之间。
您能不能推荐 另一个 MSP430来帮助我实现信号收集和传输的功能。 A/D 的频率高于12位、波特率高于1M。
谢谢!
是的、您可以。 即使 BRCLK = 1MHz、您也可以获得115200波特率。 但我认为您需要自行计算保存在寄存器中的参数。
我 将 建议使用12位 ADC 的 FR2153。 有关波特率计算、请参阅 UG 或此网站:http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html
伊斯天
感谢您的回答。我认为我对波特率的理解是正确的。 我测试4次、第一个波特率为115200、第二个为230400、第三个为460800、第四个为921600。
我通过使用 uartassist 从 PC 接收数据、当波特率为921600时、数据将会脱位、我认为 MSP430F169不能支持 更高速度的波特率。 当我使用115200、230400、460800时 、接收数据是正确的。 以下是我的计划、感谢您的帮助!
#include
#include "math.h"
unsigned int ADvalue;
unsigned char a[2];
void ADC12Init (void);
空 UART0Init (空);
空 UART_Send_Byte (无符号字符 MyData)
{
TXBUF0=MyData;
while (((UTCTL0&0x01)==0);
}
void main (void)
{
WDTCTL = WDTPW+WDTHOLD;
BCSCTL1 &=~0x80;
BCSCTL2 |=SELM1;
BCSCTL2 |=0x88;
ADC12Init();
UART0Init();
_EINT();
ADC12CTL0|=ADC12SC;
while (1);
}
空 ADC12初始化(空)
{
P6SEL = 0x01;
ADC12CTL0&=~ENC;
ADC12CTL0 = ADC12ON;
ADC12CTL1 = CONSEQ_0+SHP+ADC12SSEL_2;
ADC12MCTL0=SREF_0;
ADC12IE = BIT0;
ADC12CTL0 |= ENC;
}
空 UART0Init (空)
{
UCTL0 &=~SWRST;
UCTL0=0x10;
UTCTL0 =SSEL0+SSEL1;
UBR00 = 0x40; //晶振为7.392MHz、115200
UBR10 = 0x00;
UMCTL0 = 0x01;
ME1 = 0x80;
P3SEL |=0X30;
P3DIR |=0x10;
}
#pragma vector=ADC_vector
_interrupt void ADC (void)
{
开关(ADC12IV)
{
情况0x02:break;
情况0x04:break;
情况0x06:
ADvalue =ADC12MEM0;
A[0]= ADValue&0xFF;
A[1]=(ADvalue>8)&0xFF;
UART_Send_Byte (A[1]);
UART_Send_Byte (A[0]);
ADC12CTL0 |=ADC12SC;
默认:中断;
}
}