MS5611的ZYNQ驱动试验之二 控制器功能考虑

上一篇BLOG简单介绍了MS5611的基本情况。这里我们考虑一下如何在ZYNQ里面实现,也就是规划PS和PL如何分工实现。

一般这种有一定简单时序的外设控制器我们可以采用两个方式编写:

1,用PL构造时序,做成所谓的加速器。

2,用PL做出来基本GPIO,用PS模拟控制每一个脚模拟出来时序完成对外设的控制。

第一种方法是一个硬件加速器的思想,第二种方法是返璞归真,大道至简的方法或者说笨办法。

如果是一个简单的SPI外设,我们用第一钟方法是专业的,但是我们为了图省事,完全可以采用第二种方法,我们做一个SPI控制器的PL加速器,实现SPI的输入输出,让PS只操作几个寄存器就可以SPI数据收发,但是我们一般PS在进行SPI进行写操作之前要等待上一个SPI操作完毕,在进行读操作要等待读的完成,所以PS依然在等待。让PS直接操作PL写的IO脚,模拟出时序在这种情况下也是比较好的选择,这种模拟出来的时序能到2Mhz的样子,也不算低。这种方式好处是调试方便灵活。

这里我们设想一下,如果采用第2种方式,在进行MS5611的D1 D2转换操作时候,要白白等待8.2ms,这对于咱们一个主频高达1G的处理器来说意味着多大的浪费。于是我们采用第一种方法构造一个特殊的PL控制器。

我们在想,如何才能省掉这接近10ms的等待呢,如果让加速器自动完成这D1 D2转换命令并且把数据保存到队列里,PS用的时候直接取走。取走后队列为空,加速器再转换读出并保存到D1 D2。这样只要PS两次读之间的价格大于一定数值(且说 8.2MS+8.2MS+时序时间多说1ms)20ms,这样PS的每次读就是直接从队列里面直接取出。

既然想到这这样自动读出D1 D2,我们也直接在这个控制器里面完成RESET命令的发送以及6个16位校准字的读出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值