首页>>论坛 >>技术论坛 >>嵌入式设计 >>嵌入式系统设计
|
我要发帖  | 我要投票  | 我要回复  | 收藏
1

NIOS II的 UART

NIOS II的 UART
 
NIOS II的 UART
     NIOS II的UART 与通用串口兼容,用于可以设置自己的需求通信模式,比如波特率 奇偶校验 停止位 数据位和其他控制信号
     主要的寄存器有: txdata,rxdata,status control divisor endof packet,串口要说的东西其实不是很多,但是其确有很多很多的位定义,比如irrdy itrdy等等发送接受传输和错误检测等控制位,这里就不一一列出了,太多了,用的东西在NIOS中看名字大概也能看出来.具体见头文件 
       #i nclude "altera_avalon_uart_regs.h"
下面是我曾经用过的一个UART通信中断程序
int handle_uart_interrupts(void* context, alt_u32 id)

  FILE *uart_file;
  uart_file=fopen("/dev/uart_0","r+");
  if (uart_file == NULL)
  {
    printf("can't open uart_device!");
    return 0 ;
  }
  uart_buf[k++]=IORD_ALTERA_AVALON_UART_RXDATA(UART_0_BASE);
  if(uart_buf[k-1]=='f')
  {
    char search[20] = "s ";
    uart_buf[k-1]='\0';
    k=0;
    //printf("串口%s ", uart_buf);
    if (cur_panel.id == 0)
    {
      search[0] = 'c';
      if (strlen(uart_buf) == 2)
      {
        search[2] = '0';
        search[3] = '\0';
      }
    }
    if (strlen(uart_buf) == 6)
    {
        search[2] = '9';
        search[3] = '\0';
      }
    strcat(search, uart_buf);
    strcpy(sendbuf, search);
     }
  fclose(uart_file);
  return 0;
}
仔细看看上面的程序,并与头文件 #i nclude "altera_avalon_uart_regs.h"中所定义的可用寄存器比较一下会发现,上述写法并不可取,上述程序接受数据是字符的依次读入,其实可以在控制位和发送接受寄存器的配合下,则可以很高效的写出通信程序,而不必像上面那样显得有点"笨".
 
相关主题
又来了
回复 链接 收藏
 
RE:NIOS II的 UART
 
能不能说的具体点@
 
回复 链接 收藏
 
我要发帖  | 我要投票  | 我要回复  | 收藏
1