NIOS II的串口通讯程序
求一个NIOS II的串口通讯程序
小弟初学NIOS,想做一下串口通信,想找个程序参考一下,很简单的只要能接受和发送就行了,各位帮帮忙啊,先谢过了。
------解决方案--------------------
你在网上找《nios ii那些事儿》里边有
------解决方案--------------------
在sopc builder / qsys 里添加 uart 模块,软件部分调用dsp文件夹里头文件里的函数。
------解决方案--------------------
“很简单”的代码,这个用了中断方式你自然搞定
小弟初学NIOS,想做一下串口通信,想找个程序参考一下,很简单的只要能接受和发送就行了,各位帮帮忙啊,先谢过了。
------解决方案--------------------
你在网上找《nios ii那些事儿》里边有
------解决方案--------------------
在sopc builder / qsys 里添加 uart 模块,软件部分调用dsp文件夹里头文件里的函数。
------解决方案--------------------
“很简单”的代码,这个用了中断方式你自然搞定
#include "alt_types.h"
#include "system.h"
typedef alt_8 schar;
typedef alt_u8 uchar;
typedef alt_16 sshort;
typedef alt_u16 ushort;
typedef alt_32 slong;
typedef alt_u32 ulong;
typedef alt_u8* puchar;
typedef alt_u16* pushort;
typedef alt_u32* pulong;
#define REG8(addr) ( *( ( volatile puchar )(addr) ) )
#define REG16(addr) ( *( ( volatile pushort )(addr) ) )
#define REG32(addr) ( *( ( volatile pulong )(addr) ) )
// usart native address
#define UART_RXD_REG REG8( UART_BASE + 0*4 )
#define UART_TXD_REG REG8( UART_BASE + 1*4 )
#define UART_STS_REG REG8( UART_BASE + 2*4 )
// uart status mask
#define UART_TRDY_MSK 0x40
#define UART_RRDY_MSK 0x80
uchar uart_read_byte( void )
{
while( !( UART_STS_REG & UART_RRDY_MSK ) );
return( (uchar)( UART_RXD_REG ) );
}
void uart_send_byte( uchar dat )
{
while( !( UART_STS_REG & UART_TRDY_MSK ) );
UART_TXD_REG = dat;
}
void uart_send_string( schar* str )
{
schar dat;
while( ( dat = *str++ ) != '\0' ) uart_send_byte( (uchar)dat );
}
void uart_send_buffer( uchar* pbuf, uchar size )
{
uchar ctr;
for( ctr = 0; ctr < size; ctr++ ) uart_send_byte( *pbuf++ );
}