繁体   English   中英

连接到树莓派2的mcp3202 b的python代码

[英]python code for mcp3202 b connected to raspberry pi 2

下面给出的是连接到树莓派的10位adc(mcp3002)的python代码。 使用12位ADC(mcp3202-b)的代码时,我应该进行哪些更改?

如果有人也会向我解释此代码,这将非常有帮助。

提前致谢。

def readadc(adcnum, clockpin, mosipin, misopin, cspin):
 if ((adcnum > 1) or (adcnum < 0)):
    return -1
 GPIO.output(cspin, True)
 GPIO.output(clockpin, False)  # start clock low
 GPIO.output(cspin, False)     # bring CS low
 commandout = adcnum << 1;
 commandout |= 0x0D  # start bit + single-ended bit + MSBF bit
 commandout <<= 4    # we only need to send 4 bits here

 for i in range(4):
    if (commandout & 0x80):
        GPIO.output(mosipin, True)
    else:
        GPIO.output(mosipin, False)
    commandout <<= 1
    GPIO.output(clockpin, True)
    GPIO.output(clockpin, False) 
 adcout = 0   
 # read in one null bit and 10 ADC bits
 for i in range(11):
    GPIO.output(clockpin, True)
    GPIO.output(clockpin, False)
    adcout <<= 1
    if (GPIO.input(misopin)):
        adcout |= 0x1
 GPIO.output(cspin, True)    
 adcout /= 2       # first bit is 'null' so drop it
 return adcout

您可能可以尝试更改以下行:
for i in range(11):

for i in range(13):
还使用xrange代替range会更好。
在循环中,您读取GPIO引脚10次并捕捉其值。 adcout向左移动( <<=ilshift是整数左移),在下一个(LSB)位填充零。 因此,在一开始的adcout是二进制的0b1 ,然后0b100b1000b10000b10000等(假设只有第一个位被设置)。 如果给定的引脚设置为1,则可以将最近附加的0切换为1。 这就是读取值的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM