MCP3208
。我已经code from Github了。它是为MCp3008(10位adc)编写的。
只有我在代码中所做的更改不是调用:
adcValue = recvBits(12, clkPin, misoPin)
我致电adcValue = recvBits(14, clkPin, misoPin)
,因为必须接收 14 位数据。
问题:继续发送0-10700之间的随机数据。即使数据应该是最大4095.这意味着我没有正确地读取数据。
我认为问题在于MCP3208的max freq = 2Mhz,但在代码中,两个连续的数据读取或写入之间没有延迟。我想每当我需要转换时钟时,我需要增加一些0.5us的延迟,因为我工作在1Mhz。
摘录:
......当我们需要微秒级的准确短暂延迟时,就是这样 并不总是最好的方法,所以在研究BCM2835之后要解决这个问题 ARM Peripherals手册和他人聊天,我想出了一个 用于布线的混合解决方案。我现在所做的是延迟 100μS我使用硬件定时器(看似未使用), 并在繁忙的循环中轮询它,但是对于100μS或更长的延迟,那么我 求助于标准的nanosleep(2)电话。
答案 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数据记录器更好的分辨率。