精华内容
下载资源
问答
  • FPGA与CPU芯片进行并口通信,已测试完成
  • 双机并口通信

    2013-09-16 11:19:46
    用汇编语言写的一个双机并口通信程序,内含课程设计报告
  • C 双机并口通信实例

    2010-09-14 16:27:32
    双机并口通信实例 双机并口通信实例 双机并口通信实例
  • 并口通信函数库

    2013-04-28 11:48:54
    C++并口通信函数库,用于主机与从机之间进行并口数据传送的函数库.
  • 最初并口就是为代替串口来驱动高性能点阵式打印机[1],并口通信有SPP、EPP、ECP三种传输模式,SPP模式是半双工单向传输的,传输速率仅为15KB/S;EPP增强型模式采用双向半双工数据传输,传输速度高达2MB/S;EC
  • C实现并口通信

    2011-10-21 12:34:25
    C语言实现并口通信,并且附带实际电路和详细代码,照此方法进行可以得到合适结果,适合新手上路。
  • 本文介绍了高速率、高精度的18位AD7674与C8051F060之间并口通信的接口电路设计。采用的单片机配置灵活,传输速度快,接口采用并口通信,可实现嵌入式数据采集系统高速数据传输
  • 使用用VC++ 6.0 写的一个并口通信控制步进电机!
  • ARM9与FPGA并口通信的实现

    千次阅读 2017-03-04 16:59:17
    并口通信是最常用基础功能,实现ARM9与FPGA的并口通信有两种方式,一种颇为巧妙,利用SMC(Static Memory Controllor),其中的使能点都通过寄存器可以轻松控制;另一种方式就是通过GPIO来完成。
    

    并口通信是最常用基础功能,实现ARM9与FPGA的并口通信有两种方式,一种颇为巧妙,利用SMC(Static Memory Controllor),其中的使能点都通过寄存器可以轻松控制;另一种方式就是通过GPIO来完成。

    由于我拿到板子硬件的DRAM_CSN0DRAM_WENDRAM_RDN在前期PCB设计时没有充分考虑过SMC可能被使用,故使用接插件上其他引脚进行代替,使用了图1中画圈的三根引脚SPI0_MOSISPI0_SCKSPI0_CS。因为这三根引脚可以复用为GPIO,所以在并口调试中将这三根引脚当作GPIO来使用。

     

    1

     

    2

    3


    1

    SPI功能

    GPIO

    FPGA引脚

    功能

    SPI0_MOSI

    PA1

    W21

    写使能

    SPI0_SCK

    PA2

    W22

    读使能

    SPI0_CS

    PA3

    W20

    片选

     

    硬件连接对应情况如图2、图3和表1所示。到此,你应该已经了解了实现通信需要关注的引脚了吧。

     

    工程步骤:


    1      重设Pin Planner


    根据当前硬件的实际连接情况,对Quartus中的Pin Planner进行更新,将信号i_rd_cpui_wr_cpui_select对应的location改为PIN_W22PIN_W21PIN_W20。如图4所示。


    4

     

    2      PIOA的寄存器组重新初始化


    在最初的驱动程序中包括了对GPIO的初始化,经过试验观察PIO可读寄存器的内容发现寄存器的配置不能满足本任务的完成,使用已有的初始化会干扰到使能信号的操作,于是要对GPIO进行重新初始化,对寄存器进行配置。


    2.1       PIO_PER寄存器

    5

    该寄存器是用来启用PIOA各个引脚的GPIO模式,如图5所示,每一位都对应控制着一根GPIO管脚,通过给P1P2P31激活了PA1PA2PA3GPIO模式,同时也等于关闭了复用外围AB的模式。


     

    2.2       PIO_OER寄存器

    6

    该寄存器有默认的设置,观察发现最低4位默认为1100。本项目需要用到GPIO的输出模式,所以需要对该寄存器进行重新配置,给P1P2P31,开启引脚的输出功能。


    2.3       PIO_PUDR寄存器

    7


    通过观察PIO_PUSR寄存器可以发现默认的上拉寄存器是全部开启的,上拉寄存器的启用会影响GPIO的正常输出,所以通过PIO_PUDR寄存器将上拉寄存器关闭,为之后正常操控GPIO提供基础。


     数据的写入:


    1       概况


    PIO_SODRPIO_CODR这两个寄存器可以将指定位的GPIO电平置10。由于这里设计的读写使能为低电平有效,在程序中首先将涉及的信号均拉高,相当于对信号进行一个复位。之后就可以进行数据的发送工作。

    8

    9

    8为连续发送0x1122,0x3344,0x5566等多个数据时的情况,在写使能的上升沿对数据总线和地址总线上的信息进行取样;图9中显示当写使能信号上升沿的时刻,数据总线上的信息为0x5566,地址总线上的信息为0x0005,即将0x5566存储到RAM0x0005地址中。(上图SignalTap采样时钟为125MHz

    在一个发送周期中,经历以下过程:

    0:地址总线上出现地址信息;

    1:片选信号拉低;

    2:写使能信号拉低;

    3:数据放到数据总线上;

    4:写使能拉高,同时在上升沿时刻对数据取样;

    5:片选信号拉高。


     

    DATASHEET的SMC一章中有对并口的发送时序进行描述,当前实验结果也符合数据手册中通过SMC实现并口通信的说明,如图10、图11所示。可见,其实两种方式大同小异,实现的结果相同。


    10

    11


    2       ARM中数据的发送


    通过FPGA_WriteData函数完成数据的发送工作,其中使用了PIO寄存器中的PIO_CODRPIO_SODRPIO_ODSR三个寄存器,分别实现使能拉低,使能拉高,和标志位判断的功能。

    #define WREG(x) (*((volatile unsigned short *)(x))) 语句中,(volatileunsigned short *)(x)x定义为了一个地址指针,再通过*取内容,这样就可以将数据写到这个地址上,在之后的程序中只要直接调用WREG()就可以方便的向地址写数据。



    3       FPGA中数据的存储

    reg uprise_wr_dly;

    always @(posedgei_clk,negedge i_rst_n)

    begin

         if(!i_rst_n)

                uprise_wr_dly <= 1'b0;

         else

                uprise_wr_dly <= i_wr_cpu_pre;

    end

     

     

    reg wr;

    always @(posedgei_clk,negedge i_rst_n)

    begin

         if(!i_rst_n)

                wr <= 1'b0;

         else if((i_wr_cpu_pre == 1'b1) && (uprise_wr_dly ==1'b0))

                wr <= 1'b1;

         else

                wr <= wr;

    end

    以上程序制作了一个比写使能信号延后一个clock的信号,再通过两个信号的组合判断实现了写使能上升沿信号的处理。这在FPGA的程序中是很常见的处理方式。


           最后通过RAM程序中的接口程序,将已经处理好的数据总线信号、地址总线信号和使能信号、时钟信号添加进接口当中,功能便实现了。


     

      数据的读取:


    数据读取时的使能信号同样使用了PIO_CODRPIO_SODR这两个关键的寄存器,按照时序控制这两个寄存器的值即可。

    数据读取的情况如图12所示:

    12

        

    通过对FPGA编程将数据0x3456放到数据总线上,在ARM的程序中对数据总线所在的地址进行读取,就可以将数据读出。这里将读出的数据存储到了PIOC寄存器中,你也可以把它放到变量中来观察,验证对错。在IAR里查看PIOC的只读寄存器PIOC_ODSR就可以看到数据已经被存放到了寄存器当中。

    关于涉及到的寄存器、寄存器的控制方式、使能信号的时序以及相关软件的使用和编程思路,读取与写入是大致一样的,这里不再重复描述。

    展开全文
  • 双机并口通信 功能需求 两台实验箱,一台为发送机,一台为接收机 发送机利用键盘扫描发送数值(0–F) 接收机收到数值显示在数码管上 两机为双机单工通信 课设代码 发送机: IOY0 EQU 0600H ;片选IOY0对应的端口始...

    课设题目

    双机并口通信

    功能需求

    • 两台实验箱,一台为发送机,一台为接收机
    • 发送机利用键盘扫描发送数值(0–F)
    • 接收机收到数值显示在数码管上
    • 两机为双机单工通信

    实验电路图

    在这里插入图片描述

    课设代码

    发送机:

    IOY0         EQU   0600H          ;片选IOY0对应的端口始地址
    MY8255_A     EQU   IOY0+00H*2     ;8255的A口地址
    MY8255_B     EQU   IOY0+01H*2     ;8255的B口地址
    MY8255_C     EQU   IOY0+02H*2     ;8255的C口地址
    MY8255_CON   EQU   IOY0+03H*2     ;8255的控制寄存器地址
    
    SSTACK SEGMENT
    DW 		256 DUP(?)
    SSTACK ENDS
    
    DATA  	SEGMENT
    DTABLE	DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
    		DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
    DATA  	ENDS
    
    CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
    START: 
    	MOV AX,DATA
    	MOV DS,AX
    	MOV DX,MY8255_CON 
    	MOV AL,8DH                		;使A端口方式0辥“‡º,C高四位输入,B口方式1输出
    	OUT DX,AL
    	MOV DX,MY8255_CON 
    	MOV AL,05H                		;使ACK置1,数据未送外设,即PC2=1
    	OUT DX,AL
    BEGIN:
    	CALL DALLY
    	CALL CCSCAN						;扫描
    	JNZ  INK1
    	JMP  BEGIN
    INK1:
    	CALL DALLY
    	CALL CCSCAN
    	JNZ  INK2						;有键按下,转到INK2
    	JMP  BEGIN
    ;确定按下键的位置
    INK2:	
    	MOV CH,0FEH
    	MOV CL,00H
    COLUM:	
    	MOV AL,CH
    	MOV DX,MY8255_A 
    	OUT DX,AL
    	MOV DX,MY8255_C 
    	IN  AL,DX
    	and al,0f0h
    L1:	
    	TEST AL,10H         			;is L1?
    	JNZ L2
    	MOV AL,00H          			;L1
    	JMP KCODE
    L2:		
    	TEST AL,20H         			;is L2?
    	JNZ  L3
    	MOV  AL,04H          			;L2
    	JMP  KCODE
    L3:		
    	TEST AL,40H         			;is L3?
    	JNZ  L4
    	MOV  AL,08H          			;L3
    	JMP  KCODE
    L4:		
    	TEST AL,80H         			;is L4?
    	JNZ  NEXT
    	MOV  AL,0CH          			;L4
    KCODE:	
    	ADD  AL,CL
    	CALL SEND                       ;键盘值发送
    KRET:
    	PUSH AX
    KON: 
    	CALL CCSCAN
    	JNZ  KON
    	POP  AX
    NEXT:	
    	INC  CL
    	MOV  AL,CH
    	TEST AL,80H
    	JZ   KERR
    	ROL  AL,1
    	MOV  CH,AL
    	JMP  COLUM
    KERR:	
    	JMP BEGIN
    ;发送子程序:将3000-3005缓冲区的内容发送给接收机
    SEND:
    	MOV DX,MY8255_B  
    	OUT DX,AL                   ;把键盘值送端口B
    	MOV DX,MY8255_C  
    	IN  AL,DX                	;读端口C中的数据
    	AND AL,04H                	;测试ACK=0?
    	JZ  KRET                  	;ACK为0跳转,表示数据已送到外设,可以再次输入
    	MOV DX,MY8255_A
    	MOV AL,00H                	;将OBF置0,表明已向指定的端口输出了数据,
    	OUT DX,AL                  	;等待外设取走数据
    	CALL DALLY
    	ret			               	;无条件跳转到BEGIN
    	
    CCSCAN:
    	MOV AL,00H					;键盘扫描子程序
    	MOV DX,MY8255_A  
    	OUT DX,AL
    	MOV DX,MY8255_C 
    	IN  AL,DX
    	NOT AL
    	AND AL,0F0H
    	RET
    DALLY:	
    	PUSH CX						;延时子程序
    	MOV  CX,0006H
    T1:	
    	MOV  AX,009FH
    T2:	
    	DEC  AX
    	JNZ  T2
    	LOOP T1
    	POP  CX
    	RET
    
    CODE ENDS
    END START
    
    
    

    更多

    需要完整代码的小伙伴
    公众号:海轰Pro
    回复: 海轰
    即可获取源码

    展开全文
  • 文档详细介绍了串口及并口通信的基本知识,以及在串口通信中的流控处理,在程序中的使用等
  • X86CPU与STM32单片机增强型并口通信,郭一方,周伟,在嵌入式智能控制项目开发中,X86CPU构建的用户操作界面平台如何与基于STM32F103RCT6单片机的嵌入式控制模块实现高速稳定的数据传输?��
  • c#已提供了串口通信组件SerialPort,但是C#并没有提供直接的并口通信组件,只好通过调用API来与并口通信 代码 1 using System; 2 using System.Runtime.InteropServices; 3 namespace LptPrint_test 4 { 5 ///...

    c#已提供了串口通信组件SerialPort,但是C#并没有提供直接的并口通信组件,只好通过调用API来与并口通信

     

    代码
    
       
    1 using System;
    2   using System.Runtime.InteropServices;
    3   namespace LptPrint_test
    4 {
    5 /// <summary>
    6 /// LPTControl 的摘要说明。
    7 /// </summary>
    8   public class LPTControl
    9 {
    10 private string LptStr = " lpt1 " ;
    11 public LPTControl( string l_LPT_Str)
    12 {
    13 //
    14 // TODO: 在此处添加构造函数逻辑
    15 //
    16 LptStr = l_LPT_Str;
    17 }
    18 [StructLayout(LayoutKind.Sequential)]
    19 private struct OVERLAPPED
    20 {
    21 int Internal;
    22 int InternalHigh;
    23 int Offset;
    24 int OffSetHigh;
    25 int hEvent;
    26 }
    27 [DllImport( " kernel32.dll " )]
    28 private static extern int CreateFile( string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile);
    29 [DllImport( " kernel32.dll " )]
    30 private static extern bool WriteFile( int hFile, byte [] lpBuffer, int nNumberOfBytesToWrite, ref int lpNumberOfBytesWritten, ref OVERLAPPED lpOverlapped);
    31 [DllImport( " kernel32.dll " )]
    32 private static extern bool CloseHandle( int hObject);
    33 private int iHandle;
    34 public bool Open()
    35 {
    36 iHandle = CreateFile(LptStr, 0x40000000 , 0 , 0 , 3 , 0 , 0 );
    37 if (iHandle != - 1 )
    38 {
    39 return true ;
    40 }
    41 else
    42 {
    43 return false ;
    44 }
    45 }
    46 public bool Write(String Mystring)
    47 {
    48 if (iHandle != - 1 )
    49 {
    50 OVERLAPPED x = new OVERLAPPED();
    51 int i = 0 ;
    52 byte [] mybyte = System.Text.Encoding.Default.GetBytes(Mystring);
    53 bool b = WriteFile(iHandle, mybyte, mybyte.Length, ref i, ref x);
    54 return b;
    55 }
    56 else
    57 {
    58 throw new Exception( " 不能连接到打印机! " );
    59 }
    60 }
    61 public bool Write( byte [] mybyte)
    62 {
    63 if (iHandle != - 1 )
    64 {
    65 OVERLAPPED x = new OVERLAPPED();
    66 int i = 0 ;
    67 WriteFile(iHandle, mybyte, mybyte.Length, ref i, ref x);
    68 return true ;
    69 }
    70 else
    71 {
    72 throw new Exception( " 不能连接到打印机! " );
    73 }
    74 }
    75 public bool Close()
    76 {
    77 return CloseHandle(iHandle);
    78 }
    79 }
    80 }
    81
    82

     

     

     

    转载于:https://www.cnblogs.com/kk1230/archive/2009/11/25/1610728.html

    展开全文
  • 提出高速数据传输系统中IEEE802.3千兆网卡与同步静态存储器间非...理论分析表明,通信接口带宽可达1.2 Gb/s,协议效率在99%以上,协议工作稳定可靠,在满足千兆网卡全速接收转发数据的情况下,高速并口带宽仍有裕量。
  • 串口通信与并口通信的浅理解

    万次阅读 2012-12-26 10:06:17
    在说到通信的时候,一般都会提到窜口通信和并口通信的问题,以前一直都是听别人说,我一点也不明白,毕竟这个概念还是偏硬件了点,但是人还是要往前进的,今天多google了几下,总结了下理解方式,算是一次学习吧!...

                 在说到通信的时候,一般都会提到窜口通信和并口通信的问题,以前一直都是听别人说,我一点也不明白,毕竟这个概念还是偏硬件了点,但是人还是要往前进的,今天多google了几下,总结了下理解方式,算是一次学习吧!

               先还是说官方的概念,串口通信(Serial Communications)的概念非常简单,串口按(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。并行接口,指采用并行传输方式来传输数据的接口标准。从最简单的一个并行数据寄存器或专用接口集成电路芯片如8255、6820等,一直至较复杂的SCSI或IDE并行接口,种类有数十种。一个并行接口的接口特性可以从两个方面加以描述:1. 以并行方式传输的数据通道的宽度,也称接口传输的位数;2. 用于协调并行数据传输的额外接口控制线或称交互信号的特性。 数据的宽度可以从1~128位或者更宽,最常用的是8位,可通过接口一次传送8个数据位。

              简单理解,串口通信可以理解为串联电路,并口通信可以理解为并联电路,窜口通信是一个数据位一个数据位发送的,速率相对于并口慢,但是现在有串行的硬盘SATA接口,也是一样的道理,可以150MB/s的速度传输,得益于其串行的方式,所以只要串行方式做得好,速率问题是可以解决的,串行通信适合远距离通信,不易受到干扰。相反,并行通信就是每次可以发送8甚至更多个数据位,是并发的,所以其易收到干扰,只适合近距离传输。

              

    展开全文
  • 3、异步并口通信: 异步并口应用: --cpu类的芯片(dsp、stm32)与FPGA的数据交互,数据速率一般在100Mbps以内,数据总线不大于16bit --非cpu类的功能芯片与FPGA通过并口进行数据交互,例如配置寄存器等 并口信号说....
  • https://www.cnblogs.com/Dreamer-1/p/5523046.html http://rxtx.qbang.org/wiki/index.php/Parallel_Communications http://users.frii.com/jarvi/rxtx/download.html 相关JAR包java.comm RXTXhttp://fizze...
  • Xilinx-Verilog-学习笔记(17):异步并口通信 一、SPI总线 1、什么是SPI总线? SPI是串行外设接口(Serial Peripheral Interface),是一种高速的、全双工、同步的通信总线。 由于没有应答机制确认是否接收到数据,...
  • 先说总结:在实际时钟频率比较低的情况下,并口因为可以同时传输若干比特bit,速率确实比串口快;但时钟频率高的话,则是串口比较快。 并行总线,单个时钟周期可以传输32bit或64bit,怎么就比不了你单个时钟周期传输...
  • C++并口通信

    2015-02-27 21:15:59
    我想请问下,纯小白,想学习用C++编写并口接收数据的程序,要从哪里开始学,有没有案例或者书籍推荐,比如我要接收数据采集卡的数据。可能说的不清楚,请各位大大帮助一下,谢谢
  • 移植厂家的初始化代码,屏幕只是被点亮,没法显示数据。请问谁有遇到过这种问题吗? // //LCD复位 // LCD_RST=1; ... //--------------------------------------------------------------------------------------...
  • LCD12864驱动程序 (并口通信,带字库版本ST7920,内含简单的画点、线、圆、矩形和三角形函数以及任意尺寸图像显示。 资料内附带有完整的Keil 工程文件,并且每个函数都带有完整而详细的注释。到手可用无需修改与调。...
  • 双机均采用可编程并行接口芯片8255构成接口电路,双方的8255把...从甲机键盘上输入的字符,通过并口传送到乙机,并在乙机的屏幕上显示出来。双方按ESC键,停止传送,并退出。具体电路设计可以参考上课所讲实例。 ...
  • 根据上原理图的接法:P0.0~P0.7是数据传输线,也可理解不地址线P3.6、P3.7分别为片外写读信号线,P3.1接CS:为片外部RAM片选P3.2为显示器触摸信号线(作标志用)P3.3作外部中断用,在显示器有数据传输时,则触发单片机...
  • 摘要:介绍了一种用三态编解码芯片MC145026/27实现的基于并口的多机线通信系统的组成原理和实现方法,给出了多台微型机之间的无线通信问题的解决方案等,阐述了系统的总体组成及通信方法。 关键词:并行接口 无线...
  • 串口与并口: 串口一次接收和发送一个 bit; 并口,多个数据通路同时发送或者接收; 并口并不见得一定比串口的效率来得高; 名称中已包含串口之义: ...1. 并口通信的限制 各个数据通路上的bit不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,836
精华内容 2,334
关键字:

并口通信