zoukankan      html  css  js  c++  java
  • 关于 nios II的串口打印

        niso  II 开发环境以文件的形式来管理串口通信,对于用户来说确实方便了很多,基本上让用户找到了学习C语言的感觉。只要认真学过C语言的文件那一章的,使用NIOS II串口来应该会倍感亲切。但是我在使用串口来调试我得摄像头时,感觉很不方便。我要实现的功能很简单,把一个很大的数组中的内容传回给上位机,但是nios II似乎并没有很好地解决这个问题,因为我忙活了几天,发现nios II中的hal 支持的只是在键盘上能敲出来的些字符。我不知道该怎么描述,但是确实发现用串口传回0x30是可以的,但是传回0x00就不行了。当然我发现很多串口调试助手也是不认识这些字符的,因为串口调试助手一般都是把字符用ASC II 码打印出来的,比如我在试验的时候使用的正点原子的串口调试助手。

      因为我要传的是图片的数据,使用的是上位机看图软件,使用NIOS II 的hal文件时一旦遇到了那些串口调试助手打印不出来的的数据,串口就罢工了。

      最后被逼无奈,只好自己来写驱动软件了,参考了下《nios  II 那些事儿》中的串口程序,真的看得有点难受,只能怪当年C++没有怎么学好吧。虽然粘贴复制后程序编译没有任何错误,但是就是打印不出来任何内容。虽然以前开了点DSP2812的编程风格和这程序的风格非常相似,但是让我亲自来调试我还是感觉无从下手。

      最后只好自己来写程序了,其实直接去操作寄存器很简单的,只是程序风格没有人家那么好啦! 因为人家可以随意地操作到寄存器的每一位嘛。

      程序当然很简单的啦,因为我得需要不需要接受数据,就是自己写了点传出去的程序,也不要中断。

      代码简单得都有点不好意思上啦。呵呵

    #include "../inc/uart.h"
    #include "altera_avalon_uart_regs.h"
    #include <stdio.h>
    #include"unistd.h"

    //to transfer a byte of data
    //parameter :the data to translate
    alt_u8 Uart_Send_Byte(alt_u8 data)
    {
    //UART->TXDATA.BITS.TRANSMIT_DATA = data;
    usleep(100);//delay for some time no response but necessary
    IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, data);
    while((IORD_ALTERA_AVALON_UART_STATUS(UART_BASE)&0x40)==1);
    return success;
    }



    void Uart_Sent_String(alt_u8 *buffer, alt_32 len)
    {
    while(len--)
    Uart_Send_Byte(*buffer++);
    }



    alt_u8 Set_Baudrate(alt_32 baudrate)
    {
    IOWR_ALTERA_AVALON_UART_DIVISOR(UART_BASE,UART_FREQ/baudrate+0.5);
    return success;
    }



    void Uart_Init(void)
    {
    Set_Baudrate(115200);
    IOWR_ALTERA_AVALON_UART_STATUS(UART_BASE,0);
    }

    只需要去看看altera 的外设说明文档中关于uart core的寄存器讲述都明白的。至于接受部分应该也很随意的,不过在单字节传送中用了个延时,我自己都没法解释,因为不用打印的数据会丢失。具体情况搞不清楚,实在是在调试的时候被逼无奈加上去的,倒是希望有个明白人能给我解释下。反正最后的效果差不多了,放了个图片文件进去,接近两万个字节,打印回来数据倒是一个都没有丢失。


     

      

  • 相关阅读:
    Root resource classes
    web.xml文件的作用
    Mac OS X 快捷键(完整篇) 转载
    Eclipse快捷键大全(转载)
    mac os 下如何清除/切换svn eclipse插件的用户
    N-Queens II
    接口是永远不能被实例化的
    Chpater 10: Sorting
    Java 理论和实践: 了解泛型
    EMQ X + ClickHouse 实现物联网数据接入与分析
  • 原文地址:https://www.cnblogs.com/michile/p/2290435.html
Copyright © 2011-2022 走看看