SPI位敲打; MCP3208;覆盆子;错误

时间:2015-07-14 16:13:32

标签: raspberry-pi spi

  1. 我正在使用带有raspbian的Raspberry Pi 2板。需要通过bit banging& amp; interface MCP3208
  2. 我已经code from Github了。它是为MCp3008(10位adc)编写的。

  3. 只有我在代码中所做的更改不是调用:

    adcValue = recvBits(12, clkPin, misoPin)

  4. 我致电adcValue = recvBits(14, clkPin, misoPin),因为必须接收 14 位数据。

    1. 问题:继续发送0-10700之间的随机数据。即使数据应该是最大4095.这意味着我没有正确地读取数据。

    2. 我认为问题在于MCP3208的max freq = 2Mhz,但在代码中,两个连续的数据读取或写入之间没有延迟。我想每当我需要转换时钟时,我需要增加一些0.5us的延迟,因为我工作在1Mhz。

    3. 我暂时正在阅读Accurate Delays on the Raspberry Pi

    4. 摘录:

        

      ......当我们需要微秒级的准确短暂延迟时,就是这样   并不总是最好的方法,所以在研究BCM2835之后要解决这个问题   ARM Peripherals手册和他人聊天,我想出了一个   用于布线的混合解决方案。我现在所做的是延迟   100μS我使用硬件定时器(看似未使用),   并在繁忙的循环中轮询它,但是对于100μS或更长的延迟,那么我   求助于标准的nanosleep(2)电话。

1 个答案:

答案 0 :(得分:0)

由于RaresPlescan,我终于找到了一些py代码来简化从3208的阅读。 https://github.com/RaresPlescan/daisypi/blob/master/sense/mcp3208/adc_3.py

我在pi上有一个数据记录器,使用的是3008.我试图复制的COTS数据记录器具有更好的分辨率,所以我开始寻找12位并找到3208.我实际上交换了3008对于3208和这个人的代码我已经取得了比COTS数据记录器更好的分辨率。