1

私はマイクロコントローラープログラミングに非常に慣れていません。

私は使用しています

  • MplabX v3.26 を IDE として
  • XC16 コンパイラ
  • ピックキット 3
  • p33EP256MU810 (dspic)

プログラミング用

LED を点滅させ、UART 経由でいくつかの文字を送信する非常に単純なプログラムを作成しました。次のソース コードを参照してください。

#include <p33Exxxx.h>
#include <p33EP256MU810.h>
#include <libpic30.h>
#include <uart.h>
#include <stdlib.h>
#include <stdio.h>
#include <pps.h>
#include <xc.h>
#include <stdint.h>

// Configuration settings
_FOSC(FNOSC_FRCPLL);
_FWDT(FWDTEN_OFF);

int main() 
{    
//make all pins digital  
PADCFG1 = 0xFFFF; 

//set direction
TRISCbits.TRISC2 = 0;

//Initialze UART1
iPPSOutput(OUT_PIN_PPS_RP68, OUT_FN_PPS_U1TX);

//close UART
CloseUART1();

//open UART
OpenUART1(  UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT,
            UART_TX_ENABLE & UART_INT_TX & UART_ADR_DETECT_DIS, 
            15);

while (1) 
{
    //turn on led 
    LATCbits.LATC2 = 1;
    __delay32(3750000);    // ~1 sec delay
    //turn off led
    LATCbits.LATC2 = 0;
    __delay32(3750000);    // ~1 sec delay


    //Transmit data
    while(BusyUART1());     //Wail till available
    WriteUART1(0x55);
    WriteUART1(0xaa);
    while(BusyUART1());     //Wail till all bytes sent
}

return 0;
}

LED の点滅部分は問題なく動作していますが、シリアル モニタ ツール (X-CTU) を使用してデータを監視している UART の反対側で文字化けが発生します。

私の主な問題は、ボーレートを計算できないことです。私が何か間違ったことをしている場合はお知らせください。

ありがとうございました

4

2 に答える 2

1
  1. PADCFG1 に書き込む代わりに ANSELx レジスタをクリアして、ピンをデジタルに設定します。
  2. ボーレートで遊ぶ。手順 OpenUART1 の最後のパラメーターは、 dsPic ツールの説明ページ 147に従って U1BRG 値を指定します。またU1BRG = value;、OpenUART1 を実行した直後にボーレートを手動で追加して設定することもできます。UxBRG に渡される値は、クロック速度と希望するボー レートによって異なります。詳細については、USART のマニュアルU1MODE.BRGHページ 9 を参照してください。ボー レートを手動で設定する場合は、ビットを設定またはクリアする必要があることに注意してください。
于 2016-03-24T16:07:29.630 に答える
1

「私の主な問題は、ボーレートを計算できないことです。何か間違ったことをしている場合はお知らせください。」

望ましいボーレートが何であるかはわかりませんが:

  1. UxBRG の計算中は、クロック (発振器) の設定に注意してください ( _FOSCSEL(FNOSC_FRCPLL)PLL を有効にして使用しているため)。

  2. あなたが説明した問題は、ボーレート(発振器を含む)の計算が間違っているように聞こえるか、ポートの設定が間違っている可能性があります(データビット、パリティ、ストップビット)。

お役に立てれば...

于 2016-04-01T14:17:00.507 に答える