FPGA黑金fpga开发板板有多少G资料,哪里可以下到啊?谢谢。

黑金 Altera FPGA 开发板 各模块与芯片连接的引脚位置69
上亿文档资料,等你来发现
黑金 Altera FPGA 开发板 各模块与芯片连接的引脚位置69
你手中是否也有黑金ALTERAFPGA开发板学生;然后;LED:;LED0:G15LED1:F16LED2:F15;按键:;KEY0:E15KEY1:E16KEY2:M15;VGA:;RED:A11B10A10B9A9GREEN:B;数码管:;段:位:1:B79:A42:A810:B43:A;串口:;TXD:G1RXD:M2;PS2:;DAT:F1;CLK:
你手中是否也有黑金ALTERA FPGA开发板学生版^_^是否和我一样每次当quartus II编完程后要分配引脚时,总是得打开原理图,嘴里念着自己要找的引脚,翻来覆去地找却总也找不到它的踪影T T然后。。。忍无可忍、一气之下我把需要的引脚位置全都整理出来了,在此分享给大家,大家可以收藏起来,以后不必再被虐了,哈哈 LED: LED0:G15 LED1:F16 LED2:F15 LED3:D16按键: KEY0:E15 KEY1:E16 KEY2:M15 KEY3:M16VGA: RED:
A9 GREEN:B13
B11 BLUE: C15
A14 HSYNC:C16 VSYNC:D15数码管: 段:
8:A5串口: TXD:G1 RXD:M2PS2:DAT:F1CLK:G2蜂鸣器:J1EEPROM:SCL:L1SDA:L2实时时钟:RTC_SCLK:J2RTC_nRST:K2RTC_DATA:K1SD卡:SD_NCS:
K15SD_DIN:
K16SD_CLK:
J15SD_COUT:J167寸TFT:TFT_MODE:N13TFT_DE:N12TFT_VS:N11TFT_HS:P11TFT_DCLK:L4TFT_LR:L3TFT_UD:J6 TFT_R0:K5TFT_R1:N3TFT_R2:K6TFT_R3:P3TFT_R4:L6TFT_R5:N5 TFT_B0:M8 TFT_B1:L7 TFT_B2:L8 TFT_B3:N9 TFT_B4:M9 TFT_B5:M10 TFT_G0:M6 TFT_G1:P6 TFT_G2:N6 TFT_G3:M7 TFT_G4:P8 TFT_G5:N8256Mbit SDRAM:S_A0:T8
S_A2:T9S_A3:R9S_A4: L16S_A5: L15S_A6: N16S_A7:N15S_A8:P16S_A9: P15S_A10: R8S_A11:R16S_A12:T15 S_BA0:R7S_BA1:T7 S_nCAS:T5S_nRAS:R6S_nWE:N1S_nCS:T6S_CKE:R14S_DQM0:N2S_DQM1:T14摄像头:CMOS_SCLK: C6
CMOS_XCLK: D4
CMOS_PCLK: M1
CMOS_VSYNC: D5
CMOS_HREF: F6
CMOS_SDAT: D6
S_DB1: S_DB2: S_DB3: S_DB4: S_DB5:R1 S_DB6:P2 S_DB7:P1 S_DB8:R13 S_DB9:T13 S_DB10:R12 S_DB11:T12 S_DB12:T10 S_DB13:R10 S_DB14:T11 S_DB15:R11 CMOS_DB0:G5 CMOS_DB1:F2 CMOS_DB2:F3 CMOS_DB3:F5 CMOS_DB4:D1 CMOS_DB5:D3 CMOS_DB6:E5 CMOS_DB7:C3Seashell_9倾情分享包含各类专业文献、幼儿教育、小学教育、高等教育、应用写作文书、行业资料、生活休闲娱乐、黑金 Altera FPGA 开发板 各模块与芯片连接的引脚位置69等内容。
您可在本站搜索以下内容:
  黑金开发板引脚情况_信息与通信_工程科技_专业资料。黑金开发板引脚情况... FPGA开发板引脚图 8页 免费 DE2开发板的引脚连接 4页 免费喜欢此文档的还...  姓名:李志生 学号: 课题三:开发板上 FPGA 芯片引脚对应关系 FPGA 开发板提供了丰富的资源供开发人员使用, 包括接口通信, 控制存储, 数据转换以及人机...  二、硬件配置: 硬件配置: THSOPC-3型 FPGA开发板基于Altera Cyclone II 器件的...RS-232与FPGA 的硬件连接见表2-4。 信号说明 FPGA 引脚 104 103 / 表2-4...  模块 1 个 7 音频线连接线 1张 条 8 视频连接...Altera FPGA 开发板 品牌 市场价格 1680 会员价格 ...此外配置管脚通过插针引出, 可支持用户今后设计使用 ...  黑金FPGA 开发板 标签: 黑金 FPGA 开发
21:15 黑金 FPGA 开发...完美的引脚扩展,可用于项目前期验证,可作为产品核心板控制器,更可方 便地应用...  FPGA 开发板 FPGA 开发板 ALTERA FPGA 是世界上十几家生产 CPLD/FPGA 的公司...而且 FPGA 芯片由于管脚密集,在引 脚插座旁都标有对应的管脚号, 使您对所用...  用户可以根据自己的需要,设计实际电路,然后通过这些 I/O 口连接到 FPGA 上,...FPAG 芯片:Altera 公司的 Cyclone 系列 EP2C8Q208N,208 个引脚,TQFP 封装,它 ...  它们都是 Altera Cyclone 系列中的一员,其核心板主芯片采用 240 引脚的 FPGA,...孔插座相接, 使实验平台上的用户接口与核心 板相连构成一个完整的实验开发平台...  媒体开发 板的外观,指明了每个接口和开关组件的位置...最大的灵活性,所有的连接都通过 Cyclone II FPGA。... Altera DE2-70平台各引脚... 3页 1下载券 ...
别人正在看什么?摘要: 2014年黑金FPGA原创教程规划发布
摘要: 黑金官方淘宝店销售地址:/item.htm?id=用户手册:/kingst/ALINX822%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8CREV1.0.pdf
摘要: 以下为黑金动力社区的实体店地址及联系方式,实体店内均有FPGA黑金开发板,需要购买的朋友可以去实体店咨询。上海实体店联系人:郭敏锋电 话:地 址:上海市北京东路668号赛格电子市场2B19哈尔滨实体店联系人:郭小姐电 话:1 地 址:黑龙江省哈尔滨市船舶电子大世界东区三楼198号北京实体店联系人:林秋红 电 话: Email:地 址:北京市海淀区中关村大街32号蓝天科技综合楼B1-F5新中发电子市场2158北京博航恒业科技有限公司地址:北京市海淀区知春路118号,知春电子城3层336室电话:1
摘要: 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--我眼中的FPGA 和Verilog HDL(一)
【连载】【FPGA黑金开发板】Verilog HDL那些事儿--低级建模的基础(二)
【连载】【FPGA黑金开发板】Verilog HDL那些事儿--倾向并行操作(三)
【连载】【FPGA黑金开发板】Verilog HDL那些事儿--不是“编程”是“建模”(四)
【连载】【FP...
摘要: 【连载】【FPGA黑金开发板】NIOS II那些事儿--硬件开发(一)【连载】【FPGA黑金开发板】NIOS II那些事儿--软件开发(二)【连载】【FPGA黑金开发板】NIOS II那些事儿--编程风格(三)【连载】【FPGA黑金开发板】NIOS II那些事儿--LED实验(四)【连载】【FPGA黑金开发板】NIOS II那些事儿--外部中断实验(五)【连载】【FPGA黑金开发板】NIOS II...
摘要: 2014年黑金FPGA原创教程规划发布
摘要: 【黑金原创教程】【Verilog那些事儿-驱动篇I 】连载导读
摘要: 【黑金原创教程】【Verilog那些事儿-驱动篇I 】【实验一】流水灯模块
摘要: 范例 流水灯 图1 流水灯范例 实现步骤 步骤1: 在Quartus II中,单击File-&Convert Programming Files..。打开编程文件转换程序,如图2所示。 图2 编程文件转换程序界面 在此界面中。在Programming file type:标签后选择JTAG Indirect Configuration File (.jjc);在Configu...
摘要: 黑金官方淘宝店销售地址:/item.htm?id=用户手册:/kingst/ALINX822%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8CREV1.0.pdf
摘要: 一、什么是频率 频率是指单位时间内某事件重复的次数。在电子学中,信号的频率是指单位时间内信号的周期数,单位是赫兹(Hertz,简称Hz)。很多年前有一个著名的德国物理学家海因里希 · 鲁道夫 · 赫兹,他首先证明了电磁波的存在,为了纪念他,频率的单位就用他的名字命名。频率是一个非常常用、也是一个非常重要的国际单位;日常生活中,我们收听的收音机、观看的电视机、交流市电、移动蜂窝电话等信号的传输...
摘要: 一、iBoard任意波发生器硬件框图iBoard 任意波发生器硬件框图如图一所示。它主要包含CPU电路、FPGA电路、接口电路、液晶与人机界面电路、直流DAC 电路、高速DA转换器、低通滤波器、衰减网络、功率输出。图一 iBoard 任意波发生器硬件框图CPU电路:通过高性能Cortex-M3内核的微处理器 STM32F103VC,完成任意波发生器的主控、人机界面、接口等功能。他通过总线与FPGA 相连,完成 DDS 内核控制、波形生成、频率字写入等。FPGA电路:通过FPGA并配合内置RAM,我们使用逻辑设计 DDS 内核,完成波形信息存储、频率控制、相位控制以及调制、扫描、猝发等功能。FP
摘要: 一、什么是电路原理图 电路原理图是使用图形符号按照一定的顺序排列,详细表示电路、设备的基本连接关系,而不考虑实际位置、物理形式的一种简图,也常常简称电路图或者原理图。 1、原理图基本元素 电路原理图是由原理图符号、符号之间的电气连接以及注释等基本元素组成。原理图是工程师之间交流、企业技术归档、同事之间协同合作的一种最直接的技术手段,所以设计原理图不但要考虑原理的正确性,更要注意其...
摘要: 《iBoard 电子学堂》自发布以来,受到广大网友的热烈关注。虽然我前期设计我花了大量精力,但能得到大家的认可,我也非常欣慰。由于《iBoard 电子学堂》是从工程的角度来设计的综合学习板,所以很多同学拿到板子后,不知道从哪里入手,下面我谈谈我自己的想法。 一、切忌浮躁,做好打持久仗准备 不得不承认,现在的年轻人太浮躁了,包括我自己,整个大的环境就是这样。但是要做做好任何一件事,...
摘要: 一、我所知道的信号发生器信号发生器,通俗也称为信号源。顾名思义,信号发生器是用于产生特定参数电信号的电子装置。信号发生器是一个庞大的概念,根据不同的分类依据,可以划分出不同的类型。如依输出频率高低,可分为音频信号发生器、射频信号发生器;依据内部原理不同,可分为模拟型信号发生器、基于直接数字合成(DDS)技术的信号发生器;依据产生信号类型,可分为脉冲信号发生器,逻辑信号发生器以及通用的函数发生器等等。二十世纪八十年代之前,信号源里大部分是由模拟(阻容震荡等)方法产生,八十年代后,数字技术得到快速发展,随之带来的技术更新使得信号发生器技术逐步迈向数字行列。任意波信号发生器是现代电子设备研发、生产、
摘要: 一、什么是电子元器件常言道,巧妇难为无米之炊,电子元器件就是电子工程师的“米”,它们是电子工程师日常设计中接触到最多的实物,掌握常用器件的各项特性,是一个合格的电子工程师必备技能。电子元器件其实是电子元件和电子器件的合称。一开始他们的定义如下。电子元件是指生产过程中,不改变分子成分的成品。也叫无源器件,如电阻、电容、电感等。电子器件是指生产过程中改变分子结构的成品。如电子管、晶体管、集成电路等。随着电子行业发展越来越快,工艺逐步提高,元器件也越来越多,电子元件和电子器件的概念越来越模糊;电子工程师没必要纠结本概念。习惯中,电子元件、电子器件和电子元器件均指同一类物品。甚至某些外围物品(如连接器
摘要: ---------------------------------------- 版本信息:0.0.1.build590 功能:包含任意波发生器、示波器、电压表以及时钟等功能,基于 X-GUI。 /xiaomagee/iBoard_demo.7z 关于 《iBoard 电子学堂》... 《iBoard 电子学堂》是一个综合型...
摘要: ucGUI 一直是轻量级嵌入式GUI中的王者,他强大的功能和丰富的控件,深受工程师们的喜爱,XiaomaGee昨天抽点时间把 ucGUI 移植到了《iBoard 电子学堂》上,性能不错。 老规矩,先贴几个图,然后上传源代码。 ------ ucgui DEMO 的开机画面 ------ ------ 汽车表盘演示 ------ ------...
摘要: ZLGGUI 是一个轻量级的GUI 系统,适合于单色、彩色屏幕,对CPU要求不高,并且占用资源少。附件内为ZLGGUI 在 《iBoard 电子学堂》上的移植,效果不错。 《iBoard 电子学堂》ARM 控制器为 STM32,使用编译器为 KEIL MDK 4.23。 先贴个图。 ---------------------- 附上源代码: ...
摘要: --------------------------------------------------------------------《iBoard 电子学堂》官方群课:官方论坛: www.heijin.org--------------------------------------------------------------------《iBoard 电子学堂》囊括了当今主流器件,并实现了众多基础性功能。是一款即具有基础性,又面向工程应用的综合性学习系统。它具有以下特点:趋于主流: iBoard 设计过程贯穿了“一切从实际出发”的思想,从产
摘要: 昳貌洋溢高贵,细节彰显完美。 -------------------------整机图---------------------------- -------------------------数字示波器工作截图---------------------------- -------------------------任意波发生器工作截图-----------------------...
摘要: 一,概述 LVDS低压差分信号,最早由美国国家半导体公司 提出的一种高速串行信号传输电平,由于它传输速度快,功耗低,抗干扰能力强,传输距离远,易于匹配等优点,迅速得到诸多芯片制造厂商和应用商的青睐,并通过TIA/EIA的确认,成为该组织的标准(ANSI/TIA/EIA-644 standard)。LVDS信号被广泛应用于计算机、通信以及消费电子领域,并被以PCI-Express为代表的第...
摘要: FPGA: EP4CE15F17C8NSDRAM: 256Mbit (16M*16bit)SRAM: 4Mbit (256K*16bit)串行FLASH: 64Mbit (EPCS64)并行FLASH: 32Mbit (4M*8bit)排座: 2.0mm 22*2双晶振: 50M/40M(图中只焊接...
摘要: 关于有些客户反映USB Blaster驱动安装不上的问题的解决 有不少客户反映USB Blaster驱动装不上去,具体情况描述如下: 1. 在电脑插入USB Blaster后,屏幕右下解出现如下提示 接着出现找到新的硬件向导 选择从列表或指定位置安装(高级) 选中从列表或指定位置安装(高级)后点击下一步 在此步中选择在搜索中包括这个位置,指向quartus安装目录下的d...
摘要: AB-S05信号发生器可以与FPGA黑金开发板相连接,实现外部频率信号的输入功能。也可以将FPGA黑金开发板的信号输出到AS-SO5测频端口,测量FPGA黑金开发板频率输出。 豪华包装打造精品中的极品 下图为FPGA黑金开发板学生版套件的展示图 淘宝地址:/it...
随笔 - 144
评论 - 382查看: 5235|回复: 23
请用过的人说一说这两款FPGA开发板(黑金和21EDA的一款)
黑金 和 21EDA的一款开发板
21EDA的开发板如下图
21EDA de (原文件名:T26sRAXjtXXXXXXXXX_!!.jpg)
黑金的 (原文件名:T2LN0iXdFbXXXXXXXX_!!.jpg)
核心板独立的好处,如果你想做个其他产品试验,不用新买FPGA
21的资料比较让人纠结...
公益广告:本论坛不得使用、宣传Q群。 有讨论请在论坛里进行。 违者将封锁ID.
回复【2楼】cwwever 蔡因斯坦
-----------------------------------------------------------------------
为啥???
公益广告:发表招聘帖子需要缴费,有需要可以联系网站工作人员王小姐:.
黑金好处就是,入门资料好~养眼
公益广告:广告只能发在本论坛的广告区,否则将封锁ID。
那如果不是刚入门的人用的话哪个好呢?同时也不全是为了作SOPC 而是学习和深入数字电路设计的话那个合适呢?
有21EDA的,板子和LZ贴的略有不同,资料很多,但是很乱。。
如果不是入门的话可能差别不大吧。。猜测。。
最终选了21EDA的板子今天早上刚到手里,其他的感觉很好,但就是原理图的错误太多很多器件的序号标错了。
资料不在多,而在于自己能“吸收”多少。。
选21EDA的啊,我也正考虑,我是想找一块STM32+FPGA一起的,
黑金的板,怎么没有SD插座呢?
这是我对21EDA开发板在百度知道上作出的评价,纯粹个人体会供参考:
21eda fpga开发板 怎么样?
/question/.html
个人认为ZLG的板子不错只是太贵了而且ACTEL的FPGA不好DIY时用.
那21EDA的板子上FPGA的JTAG口的保护二极管是什么型号的呢?资料上没给,本人觉得这很重要一定要做到心里有谱,很多cyclone II 的FPGA都是坏在JTAG口上的。
关于那个二极管的型号有没有人知道啊?
不管篮板子还是黑板子,能学好知识的板子才是好板子,如果靠自己摸索,没准2个周都没点亮个小灯,所以个人感觉购买板子资料当先。黑金的2本配套资料的价值,已经超过了板子的价值。
其实黑金的资料精髓可以通用到所有PLD上。这些PLD只有开发工具不一样,其他的方面初学者都可以把PLD看作是一堆74xx,杜邦线和面包板。
21的还是别买了,很多代码都是错的。。。&&自己都没调通。。。 我买了个xilinx的,结果在verilog里面的很多都是调不通的。。。
两个都用过,跟百度的帖子感觉类似,基本的实验除了SOPC等高级一点的程序还没试过,其他都试过了,相比黑金的板子,21EDN的板子外设多不少,什么步进电机驱动,flash什么的都是黑金没有的,但黑金的板子做工没的说真漂亮,各不见用料很足,资料很好,但价格比21EDN的贵100多(加上12864)的话,所以看大家从哪个角度看了,各有优缺点。
网上还有几家也不错的,/item.htm?id=和/item.htm?id=
可以多多计较下,反正这四款我都见过,同学买的都不同。
毛遂自荐一下,我们的板板
红芯电子的不错 里面的语言很规范
正是用心想长期学下去的建议还是官方的板子~
阿莫电子论坛, 原"中国电子开发网"您现在的位置: &
【FPGA黑金开发板】如何让NIOS II的开发像单片机一样简单--SPI实验
【FPGA黑金开发板】如何让NIOS II的开发像单片机一样简单--SPI实验
    查看原图(大图)  简介   这一节,我们来讲讲NIOS II中的SPI总线的用法。首先,我们来简单介绍一下SPI总线吧,SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口,是Motorola公司推出的一种同步串行通讯方式,是一种四线同步总线,因其硬件功能很强,与 SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。  SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是MISO(主入从出),MOSI(主出从入),SCK(时钟),CS(片选)。  (1)MISO & 主设备数据输出,从设备数据输入  (2)MOSI & 主设备数据输入,从设备数据输出  (3)SCK & 时钟信号,由主设备产生  (4)CS & 从设备使能信号,由主设备控制  其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。  SPI总线的理论知识就介绍这么多,想要看具体点的去网上百度一下吧。下面我们就开始SPI总线的开发旅程吧。  硬件开发   在我们开发板中网口部分是用SPI总线实现的,网络芯片是MICROCHIP公司的ENC28J60,我们先看一下这部分的电路,如下图所示,其中与 SPI总线相关的有,LAN_MISO,LAN_MOSI,LAN_SCK这三个根线,其余的都是通过PIO模块实现的。而且有些线还用不到,比如 LAN_nWOL。    查看原图(大图)  我们这一节主要是教大家如何来实现SPI总线的功能,对于ENC28J60的原理相对复杂,在这里我就不详细讲解了,大家有兴趣的可以自己研究一下。  下      面我们就来构建SPI模块,进入SOPC BUILDER后,我们如下图所示,点击红圈处(SPI)    点击后,如下图所示,在这里面,我们有5个地方需要注意,  红圈1处是主从模式选择,我们选择主模式(Master);  红圈2处是从设备的个数,我们选择1;  红圈3处是SPI时钟速率,我们选择10M,这个地方需要注意一下,我们设置的频率与实际的频率有时候是不一致的(下面显示的是实际频率),例如,我们输入50MHz,实际的频率只有25MHz。  红圈4处是数据的位数,我们选择8;  红圈5处是移位的方向,就是说串行数据过来时,是最高位先来还是最低位先来,我们选择MSB first。    处理好这些以后,点击Finish,完成构建。  接下来,我们还要构建两个PIO模块,一个用作CS信号控制,一个用作中断信号。之所以没有用SPI总线本身的CS,是由程序处理本身决定的。中断信号的 PIO模块,构建过程需要注意一下内容,首先作为中断信号,是输入信号,所以在选择过程中,如下图所示,红圈1处选择为1,红圈2处选择Input ports only,仅作为输入端口,点击Next,进行下一步    点击后,进入下一步,如下图所示,外部中断要求电平触发,所以按红圈处选择方式。  然后,我们点击Finish,完成构建。    完成上述内容以后,我们需要对模块进行改名,如下图所示,    一切就绪,别忘了自动地址分配和中断分配。哦了,我们开始编译吧,等待&&  编译好以后,我们回到Quartus界面,根据TCL脚本文件进行管脚分配,如下图所示    查看原图(大图)  接下来我们运行脚本文件,进行编译,又一次漫长的等待&&  编译成功以后,我们开始进行软件部分的开发  软件开发  打开NIOS II 9.0 IDE,然后进行编译,快捷键Ctrl+b,等待编译成功后,我们来看看system.h中多了些什么,如下表所示,  01 /*
02  * LAN configuration
05 #define LAN_NAME "/dev/LAN"
06 #define LAN_TYPE "altera_avalon_spi"
07 #define LAN_BASE 0x
10  * LAN_CS configuration
13 #define LAN_CS_NAME "/dev/LAN_CS"
14 #define LAN_CS_TYPE "altera_avalon_pio"
15 #define LAN_CS_BASE 0x
18  * LAN_nINT configuration
21 #define LAN_NINT_NAME "/dev/LAN_nINT"
22 #define LAN_NINT_TYPE "altera_avalon_pio"
23 #define LAN_NINT_BASE 0x
24 &&  我们需要以下内容  1 #define LAN_BASE 0x
2 #define LAN_CS_BASE 0x
3 #define LAN_NINT_BASE 0x  接下来,我们需要对sopc.h进行修改,在其中加入以下代码  01 typedef struct{
02     volatile unsigned long int RXDATA;
03     volatile unsigned long int TXDATA;
04     union{
05         struct{
06             volatile unsigned long int NC           :3;
07             volatile unsigned long int ROE          :1;
08             volatile unsigned long int TOE          :1;
09             volatile unsigned long int TMT          :1;
10             volatile unsigned long int TRDY         :1;
11             volatile unsigned long int RRDY         :1;
12             volatile unsigned long int E             :1;
13             volatile unsigned long int NC1          :23;       
14         }BITS;
15         volatile unsigned long int WORD;
16     }STATUS;
18     union{
19         struct{
20             volatile unsigned long int NC           :3;
21             volatile unsigned long int IROE         :1;
22             volatile unsigned long int ITOE         :1;
23             volatile unsigned long int NC1          :1;
24             volatile unsigned long int ITRDY        :1;
25             volatile unsigned long int IRRDY        :1;
26             volatile unsigned long int IE           :1;
27             volatile unsigned long int NC2          :1;
28             volatile unsigned long int SSO          :21;
29         }BITS;
30         volatile unsigned long int CONTROL;
31     }CONTROL;
33     unsigned long int RESERVED0;
34     unsigned long int SLAVE_SELECT;
35 }SPI_STR;  这部分代码是根据《n2cpu_Embedded Peripherals.pdf》的第7-10页,如下表所示,结构体的顺序是根据下表的排列顺序进行设计的,与串口中结构体的道理相同。    查看原图(大图)  除了上述结构体以外,我们还要在sopc.h中加入以下代码  1 #ifdef _LAN
2 #define LAN          ((SPI_STR *) LAN_BASE)
3 #define LAN_CS       ((PIO_STR *) LAN_CS_BASE)      
4 #endif /*_LAN */  修改好sopc.h以后,我们需要在inc文件夹下建立一个enc28j60.h,在其中加入以下内容,(这只是enc28j60.h文件中的一部分,还有很大一部分宏定义没有写出)  01 /*-----------------------------------------------------------
02  *  Data Struct
03  *----------------------------------------------------------*/
04 typedef const struct{
05     unsigned char (* read_control_register)(unsigned char address);
06     void (* initialize)(void);
07     void (* packet_send)(unsigned short len,unsigned char * packet);
08     unsigned int (* packet_receive)(unsigned short maxlen,unsigned char * packet);
09 }ENC28J60;
11 /*----------------------------------------------------------
12  *  external variable
13  *----------------------------------------------------------*/
14 extern ENC28J60 enc28j60;  大家可以看出,在我们的程序中,这样的结构体随处可见,在之前的串口程序,还是这个SPI程序,我们都在用。它的好处就在于,可以将零散的函数和变量整合在一起,通过结构体的形式来处理,大大提高了程序的可读性,也增强了程序的可维护性和可移植性。  处理好上述内容后,我们开始编写enc28j60的驱动程序,内容很多,我们截取其中一部分有关SPI的内容来进行讲解  001 /*
002  * ==============================================================
003 *       Filename:  enc28j60.c
004 *    Description:  enc28j60 device driver
005 *        Version:  1.0.0
006  *        Created:   13:05:54
007  *       Revision:  none
008  *       Compiler:  Nios II IDE
009 *         Author:  AVIC
010  *        Company:  金沙滩工作室
012  * ==============================================================
015 /*---------------------------------------------------------------
016  *  Include
017  *---------------------------------------------------------------*/
018 #include "../inc/enc28j60.h"
019 #include "../inc/sopc.h"
020 #include &stdio.h&
022 /*--------------------------------------------------------------
023  *  Function Prototype
024  *-------------------------------------------------------------*/
025 static unsigned char enc28j60_read_control_register(
026 unsigned char address);
027 static void enc28j60_initialize(void);
028 static void enc28j60_packet_send(unsigned short len,
029 unsigned char * packet);
030 static unsigned int enc28j60_packet_receive(
031 unsigned short maxlen,unsigned char * packet);
033 /*------------------------------------------------------------
034  *  Variable
035  *------------------------------------------------------------*/
036 //结构体初始化,注意初始化的写法
037 ENC28J60 enc28j60={
038     .read_control_register = enc28j60_read_control_register,              
039     .initialize        = enc28j60_initialize,                 
040     .packet_send       = enc28j60_packet_send,                
041     .packet_receive    = enc28j60_packet_receive                  
044 static unsigned char enc28j60_bank = 1;
045 static unsigned short next_packet_
047  * ===  FUNCTION  ==============================================================
048  *         Name:  set_cs
049  *  Description: 
050  * ============================================================
052 static void set_cs(unsigned char level)         
054     if(level)   
055         LAN_CS-&DATA = 1;    
056     else       
057         LAN_CS-&DATA = 0;     
061  * ===  FUNCTION  ===============================================
062  *         Name:  enc28j60_write_operation
063  *  Description:  ENC28J60的写操作
064  * =============================================================
068 static void enc28j60_write_operation(unsigned char op,
069  unsigned char address, unsigned char data)
070 {      
071     //首先将CS置低,CS低电平有效
072 set_cs(0);
073                
074     //首先是写命令,等待状态状态寄存器的TMT位,当该位为0,说明正在发送数据,当该位//为1时,说明发送完毕,此时寄存器为空
075     LAN-&TXDATA = (op | (address & 0x1F));
076 while(!(LAN-&STATUS.BITS.TMT));
078 //写数据,等待状态状态寄存器的TMT位,当该位为0,说明正在发送数据,当该位
079 //为1时,说明发送完毕,此时寄存器为空
080     LAN-&TXDATA =          
081     while(!(LAN-&STATUS.BITS.TMT));
082     //发送完毕以后,将CS置高
083     set_cs(1);
087  * ===  FUNCTION  ================================================
088  *         Name:  enc28j60_read_operation
089  *  Description:  ENC28J60的读操作
090  * ==============================================================
092 static unsigned char enc28j60_read_operation(unsigned char op,
093 unsigned char address)
095 unsigned char 
097 //首先将CS置低,CS低电平有效
098 set_cs(0);
100     //首先是写命令,等待状态状态寄存器的TMT位,当该位为0,说明正在发送数据,当该位//为1时,说明发送完毕,此时寄存器为空
101     LAN-&TXDATA = op|(address&0x1f);
102     while(!(LAN-&STATUS.BITS.TMT));
103      
104     //写数据,发送0x00,0x00是个随机数,为了使能时钟,发送的数据与硬件有关系
105     LAN-&TXDATA = 0x00;  //0x00 is random number ,to enable clock
106     while(!(LAN-&STATUS.BITS.TMT));
107      
108     //MAC和MII寄存器读的第一个字节是无效的,所以他们需要写两次
109     if(address&0x80){
110         LAN-&TXDATA = 0x00;
111         while(!(LAN-&STATUS.BITS.TMT));  
112     }
113     //开始读数据
114     data = LAN-&RXDATA;
115 //读完以后,将CS置高
116     set_cs(1);
118     return 
119 }  对于网口这部分程序,需要结合TCP/IP协议才能进行通信,所以,这部分主函数就暂时不写了,等讲到TCP/IP协议那部分的时候,我们再进行讲解。  我们这一节主要是讲解SPI总线的使用方法,对于数据的收发都有所涉及,希望大家能够充分的理解其中的编程方法。有关ENC28J60的完整驱动,我将以附件形式提供给大家,这一节到此结束了,如果大家对这部分内容有疑问,可以加入我们的NIOS技术群,或者通过邮件形式与我沟通,谢谢大家。  出处
&&&主编推荐
&&&热门试卷
&&&最新视频
&&&热门阅读
&&&最新问答
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-

我要回帖

更多关于 arm开发板 的文章

 

随机推荐