之前咱们提到过「Pmod传感模块」,这一调配FPGA开发板进行快速原型系统开发的利器。事实上,除了Pmod规范界说接口的专利方 —— Digilent公司所供给的近百种功用丰厚的原厂Pmod传感模块之外(一般都配有免费的ip驱动供开发者直接调用),市场上存在着许多来自不同供货商所供给的可用Pmod模块。
许多来自于不知名小厂的Pmod(以台湾、深圳的山寨厂商居多),往往并不供给模块驱动,需求用户自己去写驱动填坑。假设你不幸中招,聊表安慰之余,今日就教授你一招填坑秘籍,教你在没有可用驱动情况下的应对之策。
先说要点:假设没有可用的驱动,可以运用Zynq SoC PL端(可编程逻辑)的Pmod桥模块,它让咱们可以在选用的开发板与Pmod端口之间树立正确的映射,然后开发咱们自己的Zynq PS(处理系统)驱动。假设你细心研讨正规厂商所供给的Pmod驱动,你会发现这些驱动其实也是运用Pmod桥加上一个AXI I2C或许SPI组件所完结的。
图:Digilent PmodAD2:12位四通道模仿数字转换器的驱动组件
此文中,咱们就将以Digilent(迪芝伦)PmodDA4:8通道DAC模块,以及PmodAD2:4通道ADC模块为例,咱们将这两个模块整合在一起,凭借Pmod桥模块自行开发驱动,用PmodDA4生成模仿信号,并用PmodAD2来接纳信号。
图:用Digilent Analog Discovery口袋仪器对PmodDA4测验
Pmod桥模块答应咱们界说开发板板载Pmod接口上下两排的输入类型,可以挑选界说为GPIO、UART、I2C或许SPI协议接口。咱们为所需驱动的板载Pmod接口上基层都进行相应的挑选装备,使得Pmod传感器的管脚输出(pinout)与对应的板载接口规范共同。有爱好的朋友,可点击「阅览原文」,下载检查Digilent Pmod传感器的接口规范文档。
关于PmodDA4,咱们只需求在板载Pmod接口上层运用SPI协议。这样挑选后,咱们需求供给实践的SPI通讯通道。因为咱们运用的是Zynq SoC开发板(Digilent Arty Z7),所以这儿咱们有两个挑选。榜首个办法是在PL端运用AXI SPI IP模块与Pmod桥模块树立衔接。第二个办法(也是这儿咱们将选用的)是运用EMIO树立Zynq PS SPI与Pmod桥中心的衔接。这一办法将让咱们可以在PS SPI端口与Pmod桥模块输入管脚之间树立直连。
为了完结这一点咱们需求阅览官方的Pmod接口规范文档来保证SPI管脚与Pmod桥输入管脚之间正确的映射(例如哪个PS SPI信号衔接到IN_0)。Pmod 桥模块的管脚代表不同的接口类型,它们的命名也是通用的。下面的框图展现了这儿咱们是怎么完结PmodDA4管脚的映射。在这个示例中咱们完结管脚映射后就可以构建工程,导出到SDK,编写软件程序驱动DA4。
咱们可以运用SDK中由BSP创立的SPI驱动来驱动PmodDA4。为了完结与PmodDA4的交互,榜首件事咱们要做的便是初始化SPI控制器。咱们设置好SPI时钟相位和主操作选项后就可以界说缓冲区,并运用轮询传输形式将所需的信息传递给PmodDA4。更杂乱的驱动则将运用中止驱动方法而非轮询的方法。
下面,咱们对创立好的PmodDA4驱动文件进行测验。咱们驱动一个简略的谐波输出,并运用Digilent Analog Discovery口袋仪器的示波器功用来监测DAC输出。接纳到的信号如下:
完结了一切设置PmodDA4以预期的方法正常作业,然后咱们将PmodDA4与PmodAD2衔接在一起,这样Zynq SoC才可以接纳信号:
测验时咱们要十分细心,以保证PmodDA4输出的信号在PmodAD2的作业范围内,悉数完结后则会显现PmodDA4可以在硬件上正常作业。
到这儿,信任我们现已了解了在没有可用驱动的情况下怎么自行创立Pmod驱动。当然,填坑往往是不得已而为之,人生苦短,芳华有限,尽量少碰不供给驱动的山寨小厂Pmod才是王道。