バナー
 テクノロード掲示板
ようこそ! ゲスト   [登録]  [ログイン]
返答
 件名:Re:UARTの使い方.. 2009-12-08 13:47:33 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

 >1.ボーレートに関して

ボーレートの値に関しては、指定した数値から計算して設定されるので中途半端なスピードでも指定できるようになっています。

なので115200,384000くらいであれば問題なく動作すると思います(こちらでは460800bpsまでは動作を確認しています)。

上限に関しては、あまり大きすぎると次第に精度が悪くなってくるので、大体1Mbpsくらいが目安になります。

 

>2.UART3に関して

>   USART_Init(USART3, &USART_InitStructure);
>   USART_Cmd(USART3, ENABLE);

初期化に関してはご指摘の通り、UART_init()の内容をコピーして頂いて、USART2をUSART3に置き換えて頂ければ動きます。

具体的には上記2つの変更に加えて、クロックの設定

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

と、GPIOの設定で

 /* Configure USARTx_Tx as alternate function push-pull */
   GPIO_StructInit(&GPIO_InitStructure);
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
   GPIO_InitStructure.GPIO_Speed =  GPIO_Speed_50MHz;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
     GPIO_Init(GPIOB, &GPIO_InitStructure);
 /* Configure USARTx_Rx as input floating */
    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

 

と変更してください。

また、現在お使いのライブラリがv1.0.xの場合にはinc/stm32f10x_conf.h内、v2.0.xの場合にはinc/coron.h内の

//#define _USART3

#define _USART3

としてください(USART3に関するライブラリ使用の宣言です)。

 

>3. ポートを開いた後ににパリティを操作することはできますか?

データごとにパリティを変更する簡単な方法として、データ長を

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

から

USART_InitStructure.USART_WordLength = USART_WordLength_9b;

と変更して9bitにするのが良いかと思います。

そして、送信の際に例えばパリティ=1,データ=0x45ならば

USART_SendData( USART3,0x0145 );

パリティ=0,データ=0x67ならば

USART_SendData( USART3,0x0067 );

とすればマルチプロセッサ通信に対応できます。

(同様に受信時もUSART_ReceiveData(USART3);で9bit分のデータが返ってきます)

 

その他、ご不明な点がございましたらお気軽にご連絡ください。

IP Logged
引用
 件名:UARTの使い方.. 2009-12-07 18:30:13 
UECM

ゲスト

UARTの使い方についていくつか質問があります.

1.ボーレートに関して

通信できるボーレートは高速域ではどの程度ありますでしょうか?開けるボーレートの一覧などありますか?(当方では115200,384000を使いたいと考えております.)

2.UART3に関して

UARTのCH3(拡張ポート)を使用したいのですがその場合のプログラムは

USART_InitStructureを必要数値に書き換えて,その後に

    USART_Init(USART3, &USART_InitStructure);
    USART_Cmd(USART3, ENABLE);

 と記述すればよろしいでしょうか?

(ちなみにそのときにはCh2のUARTも使用したいと考えています.)

3. ポートを開いた後ににパリティを操作することはできますか?

例えばマルチプロセッサ通信のような通信をしようとした場合にデータごとにパリティを1,0を変えたい場合にはどこを変えればばいいでしょうか?

もう一度USART_InitStructure.USART_Parityを書き換えて再度USART_Init(USART2, &USART_InitStructure)を実行すればよろしいでしょうか?

 

IP Logged
引用
返答
ページ # 


Powered by ccBoard