主题中讨论的其他器件:MSP430G2533、
工具/软件:Code Composer Studio
我有一个具有高电压电势电流测量点的电路板。 测量数据应传输到与接地电位相关的评估电子设备
进行通信。 我必须非常快速地传输测量值。 我不会在发送器和接收器之间握手。
每次测量后、我将仅发送包含两个由电流测量产生的8位字的数据包。 传输中的错误
由评估电子产品中数据的合理性进行确认。 我现在尝试使用 MSP430FR2111设置一个简单的数据传输。 我使用引脚 P1.3进行传输。 我已经安排了以下广播节目。
但是、P1.3上没有数据!
我之前已选择在 P1.7的 stad 中使用 P1.3、因此我必须重新映射输出(SYSCFG3 |= 0x01; //将输出 von P1.7更改为 P1.3)
尚未校准传输速率。 我必须在最终解决方案中使用更高的波特率。 实际配置来自用于测试光纤链路的其他测试设置。 在这里、我使用 MSP430G2533进行了测试。
#include
#include "msp430FR2111.h"
unsigned int dataen、n; // 8位数据值
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
PM5CTL0 &=~LOCKLPM5; //禁用 GPIO 上电高阻抗模式
// 时钟 setzen für 1MHz
CSCTL0 = 0x40; //DOC = 2 MOD = 0
CSCTL1 = 0xC7; //Rsel = 7
CSCTL2 = 0x00; // MCLK = DCO / 1;SMCLK = DCO / 1
// Port konfigurieren
P1DIR = 0xFF; // Alles ausgänge
P1OUT &=~0xFF; // Alle 端口 auf Null setzen
UCA0CTLW0 |= UCSWRST; // UART 复位
UCA0CTLW0 |= 0x8880; // 8位、奇数、UART、异步、SMCLK、 2停止
UCA0CTLW1 |= 0x0003; //去毛刺脉冲时间= 200ns
UCA0BR0 = 8; // 1MHz 115200
UCA0BR1 = 0; // 1MHz 115200
UCA0MCTLW = UCBRS2 + UCBRS0; //调制 UCBRSx = 5
SYSCFG3 |= 0x01; //从 P1.7到 P1.3获取输出
UCA0CTLW0 &=~UCSWRST; //初始化 eUSCI
while (1)
{
daten = 74; //从测量程序传送
N = 2; //发送两个8位字
while (n > 0) //循环两个字节
{
UCA0TXBUF =数据和0x0F; //将8位放置在 TX 缓冲区中
while (!(UCA0IFG & UCTXIFG)); //等待缓冲区为空
dataen = dataen >> 8; //上8位到下8位
N--; //转至下 一个字节进行发送
}
}
}
这是用于测试数据传输的测试程序。 在实际程序中、测量值的赋值取代值74的赋值。
您是否了解了我在程序中出现错误的地方? 您是否有一个非常简单的解决方案仅用于传输此类简单的单向数据?
感谢你的帮助。