求助tpyboard V102 外置AD7705,调试提示bound——method

import pyb

import time
from pyb import SPI,Pin
class ADS7705:
    #/* 寄存器选择  RS2 RS1 RS0  */
    REG_COMM	= 0x00 #,	/* 通信寄存器 */
    REG_SETUP	= 0x10 #,	/* 设置寄存器 */
    REG_CLOCK	= 0x20 #,	/* 时钟寄存器 */
    REG_DATA	= 0x30 #,	/* 数据寄存器 */
    REG_ZERO_CH1= 0x60 #,	/* CH1 偏移寄存器 */
    REG_FULL_CH1= 0x70 #,	/* CH1 满量程寄存器 */
    REG_ZERO_CH2= 0x61 #,	/* CH2 偏移寄存器 */
    REG_FULL_CH2= 0x71 #,	/* CH2 满量程寄存器 */
        #/* 读写操作 */
    WRITE 	= 0x00 #,	/* 写操作 */
    READ 	= 0x08#,	/* 读操作 */
        #/* 通道 */
    CH_1	= 0#,	/* AIN1+  AIN1- */
    CH_2	= 1#,	/* AIN2+  AIN2- */
    CH_3	= 2#,	/* AIN1-  AIN1- */
    CH_4	= 3#		/* AIN1-  AIN2- */
    MD_NORMAL		= (0 << 6)#,	/* 正常模式 */
    MD_CAL_SELF		= (1 << 6)#,	/* 自校准模式 */
    MD_CAL_ZERO		= (2 << 6)#,	/* 校准0刻度模式 */
    MD_CAL_FULL		= (3 << 6)#,	/* 校准满刻度模式 */
    GAIN_1		= (0 << 3)#,	/* 增益 */
            #GAIN_2			= (1 << 3),	/* 增益 */
            #GAIN_4			= (2 << 3),	/* 增益 */
            #GAIN_8			= (3 << 3),	/* 增益 */
            #GAIN_16			= (4 << 3),	/* 增益 */
            #GAIN_32			= (5 << 3),	/* 增益 */
            #GAIN_64			= (6 << 3),	/* 增益 */
            #GAIN_128		= (7 << 3),	/* 增益 */
            #/* 无论双极性还是单极性都不改变任何输入信号的状态,它只改变输出数据的代码和转换函数上的校准点 */
    BIPOLAR	= (0 << 2)#,	/* 双极性输入 */
    UNIPOLAR	= (1 << 2)#,	/* 单极性输入 */
    BUF_NO	= (0 << 1)#,	/* 输入无缓冲(内部缓冲器不启用) */
    BUF_EN	= (1 << 1)#,	/* 输入有缓冲 (启用内部缓冲器) */
    FSYNC_0	= 0#,
    FSYNC_1	= 1#		/* 不启用 */
    CLKDIS_0	= 0x00#,		/* 时钟输出使能 (当外接晶振时,必须使能才能振荡) */
    CLKDIS_1	= 0x10#,		/* 时钟禁止 (当外部提供时钟时,设置该位可以禁止MCK_OUT引脚输出时钟以省电 */
        #/*
        #	2.4576MHz(CLKDIV=0 )或为 4.9152MHz (CLKDIV=1 ),CLK 应置 “0”。
        #	1MHz (CLKDIV=0 )或 2MHz   (CLKDIV=1 ),CLK 该位应置  “1”
        #*/
    CLK_4_9152M = 0x08 #,
    CLK_2_4576M = 0x00 #,
    CLK_1M 	= 0x04 #,
    CLK_2M 	= 0x0C #,
    FS_50HZ	= 0x00 #,
    FS_60HZ	= 0x01 #,
    FS_250HZ	= 0x02 #,
    FS_500HZ	= 0x04 #,

    ZERO_0		= 0x00#
    ZERO_1		= 0x80
    def __init__(self,drdy,ce,rst,sck,di,do,softspi):
        # init the SPI bus and pins
        #spi.init(spi.MASTER, baudrate=328125,prescaler=32,bits=8, polarity=0, phase=1, firstbit=spi.MSB)
        #self.spi=spi
        if(softspi==1):
         drdy.init(drdy.IN, drdy.PULL_UP)  # Data ready
         ce.init(ce.OUT_PP,ce.PULL_NONE)  #chip enable pin
         rst.init(rst.OUT_PP,rst.PULL_NONE)
         sck.init(sck.OUT_PP,sck.PULL_NONE)
         di.init(di.OUT_PP,di.PULL_NONE)
         do.init(do.IN, do.PULL_NONE)  # Data ready
         rst.value(1)
         ce.value(1)
         sck.value(1)
         di.value(1)
         self.sck = sck
         self.di = di
         self.do = do
         self.softspi = softspi
         self.ce = ce
         self.drdy = drdy
         self.rst = rst
        else:
#         drdy.init(drdy.IN, drdy.PULL_UP)  # Data ready
#         ce.init(ce.OUT_PP,ce.PULL_NONE)  #chip enable pin
#         rst.init(rst.OUT_PP,rst.PULL_NONE)
##         rst.value(1)
 #        ce.value(1)
         SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK/DO=>X7
         SPI.init(SPI.MASTER,prescaler=340000,bits=8, polarity=1, phase=1, firstbit=SPI.MSB)
         self.spi = SPI
         self.ce = ce
         self.drdy = drdy
         self.rst = rst
         self.sck = sck
         self.di = di
         self.do = do
#         self.softspi = softspi
        self.sleep_ms(10)
        self.AD7705_ResetHard()
        self.sleep_ms(10)
        self.AD7705_SyncSPI()
        self.AD7705_IntiCh()
        #self.AD7705_CalibSelf(1)
        #self.sleep_ms(5)
        #/* 配置时钟寄存器 */
        #self.AD7705_WriteByte(self.REG_CLOCK | self.WRITE | self.CH_1)#;			/* 先写通信寄存器,下一步是写时钟寄存器 */
        #self.AD7705_WriteByte(self.CLKDIS_0 | self.CLK_4_9152M | self.FS_50HZ);	/* 刷新速率50Hz */
        #//TM7705_WriteByte(CLKDIS_0 | CLK_4_9152M | FS_500HZ);	/* 刷新速率500Hz */
        #/* 每次上电进行一次自校准 */
        #TM7705_CalibSelf(1);	/* 内部自校准 CH1 */
        self.sleep_ms(5);
    def sleep_ms(self, mseconds):
        try:
            time.sleep_ms(mseconds)
        except AttributeError:
            machine.delay(mseconds)
    def sleep_us(self, useconds):
        try:
            time.sleep_us(useconds)
        except AttributeError:
            machine.udelay(useconds)
#**************************************************************************************
#*
    def AD7705_IntiCh(self):
        self.AD7705_WriteByte(self.REG_CLOCK | self.WRITE | self.CH_1)# 先写通信寄存器,下一步是写时钟寄存器 */
        self.AD7705_WriteByte(self.CLKDIS_0 | self.CLK_4_9152M | self.FS_50HZ)#刷新速率50Hz */
        self.AD7705_WriteByte(0x10)#; /*选择设置寄存器,使用chnanel 1*/
        self.AD7705_WriteByte(0x44)#; //写设置寄存器 ,设置成单极性、无缓冲、增益为1、滤波器工作、自校准
#  if(_ch==1):
       #    self.AD7705_Send8Bit(0x20)#; /* 写通讯寄存器选中ch1*/
           #self.AD7705_Send8Bit(self.CLKDIS_0 | self.CLK_4_9152M | self.FS_50HZ);#	/* 刷新速率50Hz */)#     /*4.9152MHz,
        #   self.AD7705_Send8Bit(0x0C)
         #  self.AD7705_Send8Bit(0x10)#; /*选择设置寄存器,使用chnanel 1*/
          # self.AD7705_Send8Bit(0x40)#; //写设置寄存器 ,设置成单极性、无缓冲、增益为1、滤波器工作、自校准
        #else:
         #  self.AD7705_Send8Bit(0x21)#; /* 写通讯寄存器选中ch2 */
          # self.AD7705_Send8Bit(0x06)#; /* 2.4576MHz时钟,50Hz数据更新速率 */
           #self.AD7705_Send8Bit(0x11)#; /*选择设置寄存器,使用chnane 2*/
           #self.AD7705_Send8Bit(0x44)#; //写设置寄存器,设置成单极性、无缓冲、增益为1、滤波器工作、自校准
#*********************************************************************************************************
#*	函 数 名: AD7705_ResetHard
#*	功能说明: 硬件复位 TM7705芯片
#*	形    参: 无
#*	返 回 值: 无
#********************************************************************************************************
    def AD7705_ResetHard(self):
        self.rst.value(1)#RESET_1()
        self.sleep_ms(1) #bsp_DelayMS(1)
        self.rst.value(0)#RESET_0()
        self.sleep_ms(2)    #bsp_DelayMS(2)
        self.rst.value(1)#RESET_1()
        self.sleep_ms(1) #bsp_DelayMS(1)
        print("Rest OK")
       # self.sleep_ms(2000)
    def AD7705_SyncSPI(self):
		self.ce.value(0)
		self.AD7705_Send8Bit(0xFF)
		self.AD7705_Send8Bit(0xFF)
		self.AD7705_Send8Bit(0xFF)
		self.AD7705_Send8Bit(0xFF)
		self.ce.value(1)
#/****************
#		函数名: AD7705_Send8Bit
#		功能说明: 向SPI总线发送8个bit数据。 不带CS控制。
#*		形    参: data:数据
#*		返 回 值: 无	
    def AD7705_Send8Bit(self, data):
		for i in range(0,8):
			if(data & 0x80):
				self.di.value(1)
			else:
				self.di.value(0)
			self.sck.value(0)
			data<<1
			self.sleep_ms(5)
			self.sck.value(1)
			self.sleep_ms(5)
    def AD7705_WriteByte(self, data):
		self.ce.value(0)
		self.AD7705_Send8Bit(data)
		self.ce.value(1)
    def AD7705_ReadAdc(self, ch):
        read = 0
        for i in range(0,2):
#            self.AD7705_WaitDRDY()
            if(ch==1):
                self.AD7705_WriteByte(0x38)
            if(ch==2):
                self.AD7705_WriteByte(0x39)
            read = self.AD7705_Read2Byte
        return read
    def AD7705_WaitDRDY(self):
		for i in range(0,4000000):
			if(self.drdy.PULL_DOWN):
				break
		if(i>=4000000):
			print("M7705_WaitDRDY() Time Out ...\r\n")
    def AD7705_Read2Byte(self):
		self.ce.value(0)
		read = AD7705_Recive8Bit()
		read <<= 8
		read = read + AD7705_Recive8Bit()
		self.ce.value(1)
		return read
    def AD7705_Recive8Bit(self):
		read = 0
		for i in range(0,8):
			self.sck.value(0)
			self.sleep_us(5)
			read = read<<1
			if(self.do.IN):
				read = + read    #read++
			self.sck.value(1)
			self.sleep_us(5)
#*************************************************************
#SPI    = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
            #DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
            #CLK =>SPI(1).SCK  'X6' SPI clock
CE     = pyb.Pin('X2')
DRDY   = pyb.Pin('X4')
RST    = pyb.Pin('X3')
SCK    = pyb.Pin('X6')
DI     = pyb.Pin('X8')
DO     = pyb.Pin('X7')
ads7705 =ADS7705(DRDY,CE,RST,SCK,DI,DO,0)
print("Init OK")
print(ads7705.drdy,ads7705.drdy.value())
print(ads7705.ce,ads7705.ce.value())
print(ads7705.do,ads7705.do.value())
#v = ads7705.AD7705_ReadAdc(1)
print(ads7705.AD7705_ReadAdc(1))

#while(1):
#    v1 = ads7705.AD7705_ReadAdc(1)
#    v2 = ads7705.AD7705_ReadAdc(2)#.AD7705_Average(1,10)
#    print(v1)
#    print(v2)
      #ads7705.sleep_ms(10)
            #ads1256.AD7705_ReAD7705hipID()

 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。