第2回 NiosにUART(RS-232 Serial Port)を実装してみる

FPGA

関連記事 FPGA
関連記事 Nios
関連記事 Quartus
関連記事 第1回 NiosにUART(RS-232 Serial Port)を実装してみる

第1回の記事で、UARTのTXDとRXDをショートさせた状態で、NiosでUART通信をやってみました。

その後、もう少しまともなUART通信プログラムができたので、まとめておきます。

Terasic DE0-NANO開発ボード 【P0082】

新品価格
¥14,520から
(2020/6/1 23:35時点)

スポンサーリンク

Nios II Software Build Tools for Eclipseの設定変更

soft_test_bsp -> Nios II -> BSP Editorを開きます。

次にSettings -> Commonを選択します。

第1回ではstdinとstdoutをuart_0にしましたが、今回はjtag_uartを選択します。

これでBSP Editorの設定は終了です。

ソースコード

今回もNiosがTXDからデータを送信し、それをNiosのRXDで受信します。

今回は、割込みを使ってUART受信をやってみました。

#include "sys/alt_stdio.h"
#include "system.h"
#include <stdio.h>
#include <string.h>

#include "altera_avalon_uart_regs.h"
#include "sys/alt_irq.h"




void uart_irq_handler()
{
	unsigned char prompt;

	prompt = IORD_ALTERA_AVALON_UART_RXDATA(UART_0_BASE);
	*(volatile unsigned char *) LED_OUTPUT_BASE = prompt;

}

int main()
{
	int i=0;
	int reg;
	int context_uart1;


	alt_printf("Hello World !! \n");
	*(volatile unsigned char *) LED_OUTPUT_BASE = 0x00;


	alt_ic_isr_register(UART_0_IRQ_INTERRUPT_CONTROLLER_ID, UART_0_IRQ,uart_irq_handler,&context_uart1,0x0 );
	alt_ic_irq_enable(UART_0_IRQ_INTERRUPT_CONTROLLER_ID, UART_0_IRQ);


   while(1){

	   reg = *(volatile unsigned char *) SW_INPUT_BASE;

	   IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE, i);

	   if(i>=255) i=0;
	   else i++;

	   usleep(100000);

   }

   return (0);
}

ネットで色々サンプルプログラムを検索し、最終的に上のようなソースコードになりました。

main()のIOWR_ALTERA_AVALON_UART_TXDATA()でデータ送信をしています。

uart_irq_handler()が割込み関数で、IORD_ALTERA_AVALON_UART_RXDATA()でデータ受信をして、その値に応じてLEDを制御しています。

IOWR_ALTERA_AVALON_UART_TXDATA()とIORD_ALTERA_AVALON_UART_RXDATA()は、サンプルプログラムをそのまま流用させてもらいました。なので、詳しいことはまだ理解できていません。

あと、割込みの設定をするalt_ic_isr_register()とalt_ic_irq_enable()という関数も使っています。

これらの関数は”Nios II Software Developer Handbook”に説明がありました。

ソフトウェアのことはあまり詳しくはなく、Handbookも英語なので、これについても詳しいことは理解できませんでしたが、割込みの設定をやってるのは間違いないかと。

まとめ

第1回ではputchar()とgetchar()を使ってUARTの送受信を行いましたが、今回はそれよりもまともなソースコードになったかなと。

データシートを読んでさらに勉強をしようと思いつつ、altera(intel)のデータシートは大量にあり過ぎてなかなか理解が進まず。

アドウィン ADWIN AKE-1104S キットで学ぶ!シリーズNo.4 FPGAチャレンジャー入門編:ALTERA版 キット+CDセット AKE1104S

価格:36,897円
(2020/6/1 23:38時点)
感想(0件)

関連記事 FPGA
関連記事 Nios
関連記事 Quartus

タイトルとURLをコピーしました