Communication UART通信dsPIC33EP256MU810
我对微控制器编程非常陌生 我正在使用Communication UART通信dsPIC33EP256MU810,communication,microcontroller,uart,baud-rate,dspic,Communication,Microcontroller,Uart,Baud Rate,Dspic,我对微控制器编程非常陌生 我正在使用 MplabX v3.26作为IDE XC16编译器 PICKit 3 p33EP256MU810(dspic) 用于编程 我已经编写了一个非常简单的程序来闪烁LED并通过UART发送几个字符,请参考以下源代码: #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 //配置设置 _FOSC(FNOSC_frcpl); _FWDT(FWDTEN_关闭); int main() { //使所有管脚数字化 PADCFG1=0xFFFF
- MplabX v3.26作为IDE
- XC16编译器
- PICKit 3
- p33EP256MU810(dspic)
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
//配置设置
_FOSC(FNOSC_frcpl);
_FWDT(FWDTEN_关闭);
int main()
{
//使所有管脚数字化
PADCFG1=0xFFFF;
//设定方向
TRISCbits.TRISC2=0;
//初始化UART1
iPPSOutput(输出引脚PPS RP68,输出引脚PPS RP1TX);
//关闭UART
CloseUART1();
//开放式UART
OpenUART1(UART_EN&UART_IDLE_CON&UART_DIS_WAKE&UART_DIS_LOOPBACK&UART_DIS_ABAUD&UART_NO_paru 8BIT&UART_1STOPBIT,
UART\u TX\u启用和UART\u INT\u TX和UART\u ADR\u检测\u DIS,
15);
而(1)
{
//打开led
LATCbits.LATC2=1;
__延迟32(3750000);//~1秒延迟
//关闭led
LATCbits.LATC2=0;
__延迟32(3750000);//~1秒延迟
//传输数据
while(BusyUART1());//哭到有空为止
WriteUART1(0x55);
WriteUART1(0xaa);
while(BusyUART1());//哀号,直到发送完所有字节
}
返回0;
}
LED闪烁部分工作正常,但我在UART的另一端接收垃圾字符,在那个里我使用串行监控工具(X-CTU)监控数据
我的主要问题是我不能计算波特率。如果我做错了什么,请告诉我 多谢各位
U1BRG=value手动设置波特率代码>在执行OpenUART1之后。
传递给UxBRG的值取决于时钟速度和期望的波特率,更多细节见第9页。请注意,如果手动设置波特率,还需要设置或清除U1MODE.BRGH
位李>
“我的主要问题是我无法计算波特率。如果我做错了什么,请告诉我。”
我不知道期望的波特率是多少,但:
在进行UxBRG计算时,请注意时钟(振荡器)设置(因为您使用的是启用PLL的\u FOSCSEL(FNOSC\u FRCPLL)
)
您描述的问题听起来像是错误的波特率(包括振荡器)计算,或者可能是端口设置错误(数据位、奇偶校验、停止位)
希望这有助于