NIOS2随笔——JPEG图片的UART传输显示

简介:

1. 系统概述

本设计采用NIOS2 32位处理器,通过SPI接口将SD/TF卡中的JPEG图片数据读取到内存中,SD/TF卡的文件系统为FAT32,NIOS2软件实现将JPEG图片通过UART串口发送给上位机显示,系统框图如下:

wKioL1j63TTihq4wAADsDtyTL_k224.png


2. UART介绍

UART(Universal Asynchronous Receiver/Transmitter)是一种异步收发传输器,工作原理是将传输数据的每个字符一位接一位地传输。

UART在空闲时为逻辑1状态,其各位的的意义如下:

  • 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

  • 资料位:紧接着起始位之后。资料位的个数一般为8,构成一个字符。通常采用ASCII码,从最低位开始传送,靠时钟定位。

  • 奇偶校验位:资料位加上这一位后,使得1的位数应为偶数(偶校验)或奇数(奇校验)。

  • 停止位:一个字符数据的结束标志,可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此需要多于1位的高电平时间,提供计算机校正时钟同步的机会。


3. 搭建QSYS系统

这里主要是添加UART组件,如下图所示:

wKiom1jnrMPzj9L2AACDBB2PwPY808.jpg

wKiom1jnqzqj_AYHAAEnNguCXSE408.jpg


4. 驱动软件设计
驱动代码,负责将SD中的JPEG图片读取到内存中,然后通过UART发送给上位机显示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
unsigned  char  desk[54171];
 
int  main ( void )
{
     int  i;
     FILE * fp;
     fp =  fopen  ( "/dev/uart_0" "w" );
     while (1)
     {
         for (i=0;i<54171;i++)
         {
             if  (fp!=NULL)
             {
                 fprintf (fp,  "%c" ,desk[i]);
             }
         }
     }
     fclose (fp);
     return  0;
}


5. 最终结果

编译运行软件后,打开上位机DEMO软件,设置串口波特率为115200,打开串口后,图片正确显示。

wKiom1jnroaxumgEAAQgTRDa4UM901.png


本文转自 shugenyin 51CTO博客,原文链接:http://blog.51cto.com/shugenyin/1914015


相关文章
|
Android开发 异构计算
nios ii FIFO读取FPGA数据交互实验1
nios ii FIFO读取FPGA数据交互实验1
258 0
nios ii FIFO读取FPGA数据交互实验1
|
Android开发 C++ 芯片
nios ii小实验——第一个demo指导书
nios ii小实验——第一个demo指导书
191 0
nios ii小实验——第一个demo指导书
|
异构计算
nios ii小实验——SDRAM读写
nios ii小实验——SDRAM读写
244 0
nios ii小实验——SDRAM读写
|
6月前
gstreamer将RTSP转jpg图片保存
gstreamer将RTSP转jpg图片保存
242 0
|
存储 编解码 Linux
嵌入式Linux下LCD应用编程: 调用giflib库解码显示GIF动态图
嵌入式Linux下LCD应用编程: 调用giflib库解码显示GIF动态图
773 0
嵌入式Linux下LCD应用编程: 调用giflib库解码显示GIF动态图
|
C语言 Android开发
【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示
在前面的文章中已经完成了图片的加载和显示,接下来要做的就是加载 YUV 文件并显示
354 0
【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示
|
内存技术
【STM32 .Net MF开发板学习-07】全屏位图无闪烁显示
16位320*240的位图大小为150K字节,而对于EM-STM3210E开发板来说,RAM仅有128K,远不够显示一幅完整位图,红牛的开发板即使有256K的RAM,但是刨去堆、栈及TinyCLR本身所用,剩下的也不多了,所以要显示全屏位图,必须分块显示。
536 0