2018|12

2640

帖子

6

TA的资源

五彩晶圆(初级)

楼主
 

Micropython 采集ADX51X数据 [复制链接]

 
 

ADX51X兼容TI ADS125X

from machine import Pin, SoftSPI
import time

def ID(agreement):
    #txbuf 需要将16进制转换为10进制
    
    rxbuf = bytearray(3)      # create a buffer
    spi = SoftSPI(baudrate=200000, polarity=1, phase=0, mosi=Pin(16), miso=Pin(4), sck=Pin(2))
    spi.init(baudrate=125000) # set the baudrate
    CS = Pin(17, Pin.OUT)    # create output pin on GPIO16
    CS.value(1)             # set pin to on/high
    time.sleep(1)
    CS.value(0)             # set pin to on/high
    txbuf =bytearray([16,0,0])
    spi.write_readinto(txbuf, rxbuf) # write to MOSI and read from MISO into the buffer
    CS.value(1)             # set pin to on/high
    return rxbuf
#采集P=AIN0 N=AIN1时候的电压
def GetADCValue(agreement):
    #Rxbuffs = bytearray(3)      # create a buffer
    spi = SoftSPI(baudrate=200000, polarity=1, phase=0, mosi=Pin(16), miso=Pin(4), sck=Pin(2))
    spi.init(baudrate=125000) # set the baudrate
    CS = Pin(17, Pin.OUT)    # create output pin on GPIO16
    CS.value(1)             # set pin to on/high
    time.sleep(1)
    CS.value(0)             # set pin to on/high
    #第4位设置电压采样输入p和n
    txbuf =bytearray([15,81,0,1,252,0,1])
    spi.write(txbuf)
    txbuf =bytearray([0,0,0])
    #读取三个字节
    rxbuf=spi.read(3,0)
    CS.value(1)             # set pin to on/high
    return rxbuf

ADX51X micropython 驱动 主要用于读取芯片ID和芯片电压采样

  采集电压时候的SPI波形

芯片手册 采集时候切换mux 的sequence

 

后续用于Pyvisa来控制esp32来对比采集数据和万用表采集数据

最新回复

我刚好在ADC芯片选型,这芯片漂移怎么样?   详情 回复 发表于 2024-3-8 15:45
点赞 关注(1)
个人签名

希望做一些大家觉得好用的东西!

 
 

回复
举报

2640

帖子

6

TA的资源

五彩晶圆(初级)

沙发
 
/*
    Analogysemi xutong
    2023/03/06
*/
#ifndef __ADX51X_H
#define __ADX51X_H

#include "bsp_lpspi.h"


/*command define*/

#define ADX51X_WAKEUP 0x00
#define ADX51X_RDATA   0x01
#define ADX51X_RDATAC  0x03
#define ADX51X_SDATAC  0x0F
#define ADX51X_RREG    0x10
#define ADX51X_WREG    0X50
#define ADX51X_SELFCAL 0XF0
#define ADX51X_SELFOCAL 0XF1
#define ADX51X_SELFGCAL 0XF2
#define ADX51X_SYSOCAL 0XF3
#define ADX51X_SYSGCAL 0XF4
#define ADX51X_SYNC     0XFC
#define ADX51X_STANDBY 0xFD
#define ADX51X_RESET   0xFE



//RREG Read n nnnn registers starting at address r rrrr 
//First Byte 001r rrrr (2xh)
//Second Byte 000n nnnn 
//n nnnn = number of registers to be read or written – 1. For example, to read or write three registers, set n nnnn = 0 (0010). r rrrr = the
//starting register address for read and write commands
//WREG 同上




/*
    寄存器定义
*/
#define  ADX51X_STATUS 0x00
#define  ADX51X_MUX 0x01
#define  ADX51X_ADCON 0x02
#define  ADX51X_DRATE 0x03
#define  ADX51X_IO 0x04
#define  ADX51X_OFC0 0x05
#define  ADX51X_OFC1 0x06
#define  ADX51X_OFC2 0x07
#define  ADX51X_FSC0 0x08
#define  ADX51X_FSC1 0x09
#define  ADX51X_FSC2 0x0A
#define  ADX51X_CFG0 0x0B
#define  ADX51X_CFG1 0x0C
#define  ADX51X_CFG2 0x0D
#define  ADX51X_CFG3 0x0E
#define  ADX51X_CFG4 0x0F
#define  ADX51X_CFG5 0x10
#define  ADX51X_DEV_CFG 0x11
#define  ADX51X_MOD_STAT 0x12
#define  ADX51X_DEV_STAT 0x13
#define  ADX51X_CMD_STAT 0x14


#define ADX51X_AIN0 0
#define ADX51X_AIN1 1
#define ADX51X_AIN2 2
#define ADX51X_AIN3 3
#define ADX51X_AIN4 4
#define ADX51X_AIN5 5
#define ADX51X_AIN6 6
#define ADX51X_AIN7 7
#define ADX51X_AIN_COM 8



/*
  通道配置
  channel config
*/
#define ADX51X_ADC_CH(x)	x	
#define DRDY_PIN	P00
//写命令
void ADX51X_Command(uint8_t Com);
//获取芯片的ID号
uint8_t ADX51X_GetChipID(void);

//获取寄存器值
uint8_t ADX51X_GetReg(uint8_t Rreg);
//获取多个寄存器值
void ADX51X_ReadMultiReg(uint8_t StartReg,uint8_t RegNum,uint8_t *Data);
//写入寄存器值
void ADX51X_WriteReg(uint8_t Wreg,uint8_t Data);
//写多个寄存器的值
void ADX51X_WriteMultiReg(uint8_t StartReg,uint8_t RegNum,uint8_t *Data);
//获取所有寄存器值
void ADX51X_GetAllReg(void);
//设定通道并且获取ADC的值

void ADX51X_GetADC_Value(uint8_t AIN_P,uint8_t AIN_N,uint8_t *Rxdata);
//初始化ADX51X
void ADX51X_Init(void);
#endif
/*
    Analogysemi xutong
    2024/03/06
*/
#include "ADX51X.h"
#include "bsp_lpspi.h"
//初始化ADX51X
void ADX51X_Init(void)
{
  //拉PWDN和RST
}
//获取芯片的ID号
//ADX51X default Value 0x20
uint8_t ADX51X_GetChipID(void)
{
    uint8_t ID;
    ID=ADX51X_GetReg(ADX51X_STATUS);
    return ID;
}
//获取芯片寄存器值
uint8_t ADX51X_GetReg(uint8_t Rreg)
{
   uint8_t TxData[3];
   uint8_t RxData[3];
    //读取命令,
    TxData[0]=ADX51X_RREG|Rreg;
    //选择要读取的寄存器
    TxData[1]=0x00;
    //读取单个寄存器
    TxData[2]=0X00;
    //开始读取
    Lpspi_Read(3,TxData,RxData);
    //返回寄存器值
    return RxData[2];
}
//写单个芯片寄存器值
void ADX51X_WriteReg(uint8_t Wreg,uint8_t Data)
{
    uint8_t TxData[3];
    //写入命令,
    TxData[0]=ADX51X_WREG|Wreg;
    //选择要写入的的寄存器
    TxData[1]=0x00;
    //读取写入寄存器
    TxData[2]=Data;
    Lpspi_Write(3,TxData);
}
//写多个芯片寄存器值
//StartReg 起始寄存器地址
//RegNum 要写的寄存器数量
//*Data  寄存器参数传入
void ADX51X_WriteMultiReg(uint8_t StartReg,uint8_t RegNum,uint8_t *Data)
{
    uint8_t TxData[32];
    uint8_t i;
    //写入命令,
    TxData[0]=ADX51X_WREG|StartReg;
    //选择要写入的的寄存器
    TxData[1]=RegNum-1;
    for(i=0;i<RegNum;i++)
    {
       //将指针数据赋值给Txdata
       TxData[2+i]=*Data;
       //指向下个数据地址
       Data++;
    }
    //最终发送多少个数据
    Lpspi_Write(2+RegNum,TxData);
}
//读多个芯片寄存器值
//StartReg 起始寄存器地址
//RegNum 要写的寄存器数量
//*Data  寄存器参数传出
void ADX51X_ReadMultiReg(uint8_t StartReg,uint8_t RegNum,uint8_t *Data)
{
    //读取寄存器
    uint8_t TxData[3];
    //读取命令,
    TxData[0]=ADX51X_RREG|StartReg;
    //选择要写入的的寄存器
    TxData[1]=RegNum-1;
    //最终接收多少个数据
     Lpspi_Read(2+RegNum,TxData,Data);
}
//打印所有寄存器地址
void ADX51X_GetAllReg(void)
{
  uint8_t i,j;
  for(i=0;i<20;i++)
  { 
    j=ADX51X_GetReg(i);
  }
}
//发送ADX51X 数据指令 如SDATAC或者RDATAC
//详情见头文件command define部分
void ADX51X_Command(uint8_t Com)
{
    uint8_t TxData[1];
		TxData[0]=Com;
    Lpspi_Write(1,TxData);
}
//设定通道并且获取adc数据
//获取ADC的值 
//ADC负接在AIN1上
void ADX51X_GetADC_Value(uint8_t AIN_P,uint8_t AIN_N,uint8_t *Rxdata)
{
  uint8_t TxData[]={0,0,0};
  // 可以在这里加DRDY的判断
  ADX51X_Command(ADX51X_SDATAC);
  ADX51X_WriteReg(ADX51X_MUX,AIN_P<<4|AIN_N);
  ADX51X_Command(ADX51X_SYNC);
  ADX51X_Command(ADX51X_WAKEUP);
  ADX51X_Command(ADX51X_RDATA);
  Lpspi_Read(3,TxData,Rxdata);  
  Lpspi_Stop();
}

补充下驱动

#include "bsp_lpspi.h"
#ifdef HardWare_SPI          //Begin of hard_spi
SPI_HandleTypeDef SpiHandle;
void Spi_delay(uint32_t count)
{ 
    volatile uint32_t i = 0;
    for (i = 0; i < count*10; ++i)
    {
        __asm("NOP"); /* 调用nop空指令 */
         __asm("NOP"); /* 调用nop空指令 */
          __asm("NOP"); /* 调用nop空指令 */
           __asm("NOP"); /* 调用nop空指令 */
            __asm("NOP"); /* 调用nop空指令 */
    }
}
void LPSPI_Init(void)
{
    
    GPIO_InitTypeDef  GPIO_InitStruct;
    /* Enable SPI1 clock */
    SPIx_CLK_ENABLE();
    SPIx_SCK_GPIO_CLK_ENABLE();
    SPIx_MISO_GPIO_CLK_ENABLE();
    SPIx_MOSI_GPIO_CLK_ENABLE();
    SPIx_CS_GPIO_CLK_ENABLE();
    
    /* 初始化GPIO 配置*/
    /*##-1- Configure peripheral GPIO ##########################################*/
    /* SPI SCK GPIO pin configuration  */
    GPIO_InitStruct.Pin       = SPIx_SCK_PIN;
    GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
    //GPIO_InitStruct.Pull      = GPIO_PULLDOWN;
    GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_HIGH;
    //GPIO_InitStruct.Alternate = SPIx_SCK_AF;
    HAL_GPIO_Init(SPIx_SCK_GPIO_PORT, &GPIO_InitStruct);

    /* SPI MISO GPIO pin configuration  */
    GPIO_InitStruct.Pin = SPIx_MISO_PIN;
	GPIO_InitStruct.Mode      = GPIO_MODE_INPUT;
	GPIO_InitStruct.Pull = GPIO_PULLUP;
    //GPIO_InitStruct.Alternate = SPIx_MISO_AF;
    HAL_GPIO_Init(SPIx_MISO_GPIO_PORT, &GPIO_InitStruct);

    /* SPI MOSI GPIO pin configuration  */
    GPIO_InitStruct.Pin = SPIx_MOSI_PIN;
	GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
    //GPIO_InitStruct.Alternate = SPIx_MOSI_AF;
    HAL_GPIO_Init(SPIx_MOSI_GPIO_PORT, &GPIO_InitStruct);
    
   /* SPI CS GPIO pin configuration  */
    GPIO_InitStruct.Pin   = SPIx_CS_PIN;
    GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
    //GPIO_InitStruct.Pull  = GPIO_PULLDOWN;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(SPIx_CS_GPIO_PORT, &GPIO_InitStruct);
    
      /* 初始化SPI 配置*/
     /*##-2- Configure the SPI peripheral #######################################*/
    /* Set the SPI parameters */
    SpiHandle.Instance               = SPIx;
    SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
    SpiHandle.Init.Direction         = SPI_DIRECTION_2LINES;
    SpiHandle.Init.CLKPhase          = SPI_PHASE_2EDGE ;
    SpiHandle.Init.CLKPolarity       = SPI_POLARITY_LOW;
    SpiHandle.Init.DataSize          = SPI_DATASIZE_8BIT;
    SpiHandle.Init.FirstBit          = SPI_FIRSTBIT_MSB;
    SpiHandle.Init.TIMode            = SPI_TIMODE_DISABLE;
    SpiHandle.Init.CRCCalculation    = SPI_CRCCALCULATION_DISABLE;
    SpiHandle.Init.CRCPolynomial     = 7;
    SpiHandle.Init.NSS               = SPI_NSS_SOFT;
    SpiHandle.Init.Mode              = SPI_MODE_MASTER;
    //初始化SPI
    HAL_SPI_Init(&SpiHandle);
	__HAL_SPI_ENABLE(&SpiHandle);
    //默认拉高CS引脚
    HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_SET);
	
}
void Lpspi_Start(void)
{
	HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_RESET);
}
void Lpspi_Stop(void)
{
	HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_SET);
}
void Lpspi_Write(uint8_t datasize,uint8_t *data)
{
  
  //写数据
  HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_RESET);
  HAL_SPI_Transmit(&SpiHandle,data, datasize, 5000);
  Spi_delay(30);
  HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_SET);
}
void Lpspi_Read(uint8_t datasize,uint8_t *data,uint8_t *Rxdata)
{
//  读写数据
  HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_RESET);
  HAL_SPI_TransmitReceive(&SpiHandle,data,Rxdata, datasize, 5000);
  Spi_delay(30);
  HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_SET);
}
#endif    //end of hard_spi

#ifdef Soft_SPI  //begin of soft_spi
SPI_HandleTypeDef SpiHandle;
void Spi_delay(uint32_t count)
{ 
    volatile uint32_t i = 0;
    for (i = 0; i < count; ++i)
    {
        __asm("NOP"); /* 调用nop空指令 */
         __asm("NOP"); /* 调用nop空指令 */
          __asm("NOP"); /* 调用nop空指令 */
           __asm("NOP"); /* 调用nop空指令 */
            __asm("NOP"); /* 调用nop空指令 */
    }
}
void LPSPI_Init(void)
{
    
    GPIO_InitTypeDef  GPIO_InitStruct;
    /* Enable SPI1 clock */
    //SPIx_CLK_ENABLE();
    SPIx_SCK_GPIO_CLK_ENABLE();
    SPIx_MISO_GPIO_CLK_ENABLE();
    SPIx_MOSI_GPIO_CLK_ENABLE();
    SPIx_CS_GPIO_CLK_ENABLE();
    
    /* 初始化GPIO 配置*/
    /*##-1- Configure peripheral GPIO ##########################################*/
    /* SPI SCK GPIO pin configuration  */
    GPIO_InitStruct.Pin       = SPIx_SCK_PIN;
    GPIO_InitStruct.Mode      = GPIO_MODE_OUTPUT_PP;
    //GPIO_InitStruct.Pull      = GPIO_PULLDOWN;
    GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_HIGH;
    //GPIO_InitStruct.Alternate = SPIx_SCK_AF;
    HAL_GPIO_Init(SPIx_SCK_GPIO_PORT, &GPIO_InitStruct);

    /* SPI MISO GPIO pin configuration  */
    GPIO_InitStruct.Pin = SPIx_MISO_PIN;
	GPIO_InitStruct.Mode      = GPIO_MODE_INPUT;
	GPIO_InitStruct.Pull = GPIO_PULLUP;
    //GPIO_InitStruct.Alternate = SPIx_MISO_AF;
    HAL_GPIO_Init(SPIx_MISO_GPIO_PORT, &GPIO_InitStruct);

    /* SPI MOSI GPIO pin configuration  */
    GPIO_InitStruct.Pin = SPIx_MOSI_PIN;
	GPIO_InitStruct.Mode      = GPIO_MODE_OUTPUT_PP;
    //GPIO_InitStruct.Alternate = SPIx_MOSI_AF;
    HAL_GPIO_Init(SPIx_MOSI_GPIO_PORT, &GPIO_InitStruct);
    
   /* SPI CS GPIO pin configuration  */
    GPIO_InitStruct.Pin   = SPIx_CS_PIN;
    GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
    //GPIO_InitStruct.Pull  = GPIO_PULLDOWN;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(SPIx_CS_GPIO_PORT, &GPIO_InitStruct);
  
    //默认拉高CS引脚
    HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_SET);
	//SCLK空闲拉低
	HAL_GPIO_WritePin(SPIx_SCK_GPIO_PORT,SPIx_SCK_PIN,GPIO_PIN_RESET);
	//SCLK空闲拉高
	//HAL_GPIO_WritePin(SPIx_SCK_GPIO_PORT,SPIx_SCK_PIN,GPIO_PIN_SET);
	
}
void Lpspi_Start(void)
{
	HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_RESET);
}
void Lpspi_Stop(void)
{
	HAL_GPIO_WritePin(SPIx_CS_GPIO_PORT,SPIx_CS_PIN,GPIO_PIN_SET);
}
void SCLK_H(void)
{
	HAL_GPIO_WritePin(SPIx_SCK_GPIO_PORT,SPIx_SCK_PIN,GPIO_PIN_SET);
}
void SCLK_L(void)
{
	HAL_GPIO_WritePin(SPIx_SCK_GPIO_PORT,SPIx_SCK_PIN,GPIO_PIN_RESET);
}
void SPI_Transmit_Data_mode0(uint8_t *Data ,uint8_t Size)      //SCLK low  first edge
{
	uint8_t i,a=0,data=0;
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		for(i = 0;i < 8;i++)
		{
			SCLK_L();
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
			SCLK_H();
			data <<=1;
		}
	}
}
void SPI_Receive_Data_mode0( uint8_t *Data,uint8_t *Rxdata ,uint8_t Size)   //SCLK low  first edge
{
	uint8_t i,a,data;
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		Rxdata[a]=0;
		for(i = 0;i < 8;i++)
		{
			SCLK_L();
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
			if(HAL_GPIO_ReadPin(SPIx_MISO_GPIO_PORT,SPIx_MISO_PIN)==1)
			{
				Rxdata[a]|=(0x80 >>i);
			}
			SCLK_H();
			data <<=1;
		}
	}
}
void SPI_Transmit_Data_mode1(uint8_t *Data ,uint8_t Size)   //SCLK low  second edge
{
	uint8_t i,a=0,data=0;
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		for(i = 0;i < 8;i++)
		{
			SCLK_H();
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
			data <<=1;
			SCLK_L();
		}
	}
}
void SPI_Receive_Data_mode1( uint8_t *Data,uint8_t *Rxdata ,uint8_t Size)   //SCLK low  second edge
{
	uint8_t i,a,data=0;
	
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		Rxdata[a]=0;
		for(i = 0;i < 8;i++)
		{
			SCLK_H();
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
			data <<=1;
 			SCLK_L();
			if(HAL_GPIO_ReadPin(SPIx_MISO_GPIO_PORT,SPIx_MISO_PIN)==1)
			{
				Rxdata[a]|=(0x80 >>i);
			}
		}
	}
}
void SPI_Transmit_Data_mode2(uint8_t *Data ,uint8_t Size)            //SCLK high  first edge
{
	uint8_t i,a=0,data=0;
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		for(i = 0;i < 8;i++)
		{
			SCLK_H();
			//Spi_delay(1);
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
			//Spi_delay(1);
			SCLK_L();
			//Spi_delay(1);
			data <<=1;
			SCLK_H();
			//Spi_delay(1);
		}
	}
}
void SPI_Receive_Data_mode2( uint8_t *Data,uint8_t *Rxdata ,uint8_t Size)   //SCLK low  first edge
{
	uint8_t i,a,data=0;
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		Rxdata[a]=0;
		for(i = 0;i < 8;i++)
		{
			SCLK_H();
			//Spi_delay(1);
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
 			SCLK_L();
			if(HAL_GPIO_ReadPin(SPIx_MISO_GPIO_PORT,SPIx_MISO_PIN)==1)
			{
				Rxdata[a]|=(0x80 >>i);
			}
			data <<=1;
			SCLK_H();
		}			
	}
}
void SPI_Transmit_Data_mode3(uint8_t *Data ,uint8_t Size)     //SCLK high  second edge
{
	uint8_t i,a=0,data=0;
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		for(i = 0;i < 8;i++)
		{
			SCLK_L();
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
			data <<=1;
			SCLK_H();
		}
	}
}
void SPI_Receive_Data_mode3( uint8_t *Data,uint8_t *Rxdata ,uint8_t Size)   //SCLK low  second edge
{
	uint8_t i,a,data=0;
	for(a=0;a<Size;a++)
	{
		data = Data[a];
		Rxdata[a]=0;
		for(i = 0;i < 8;i++)
		{
			SCLK_L();
			if(data&(0x80))//data bit = 1
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_SET);//MOSI SET 1
			}
			else
			{
				HAL_GPIO_WritePin(SPIx_MOSI_GPIO_PORT,SPIx_MOSI_PIN,GPIO_PIN_RESET);//MOSI SET 0
			}
			data <<=1;
 			SCLK_H();
			if(HAL_GPIO_ReadPin(SPIx_MISO_GPIO_PORT,SPIx_MISO_PIN)==1)
			{
				Rxdata[a]|=(0x80 >>i);
			}
		}
	}
}
void Lpspi_Write(uint8_t datasize,uint8_t *data)
{
  //写数据
  Lpspi_Start();
  SPI_Transmit_Data_mode1(data,datasize);
  Spi_delay(30);
  //Lpspi_Stop();
}
void Lpspi_Read(uint8_t datasize,uint8_t *data,uint8_t *Rxdata)
{
//  读写数据
  Lpspi_Start();
  SPI_Receive_Data_mode1( data,Rxdata ,datasize);
  //Spi_delay(30);
  //Lpspi_Stop();
}

#endif //end of soft_spi
/*
  analogysemi
  xutong 2023/10/19
*/
#ifndef __BSP_LPSPI_H
#define __BSP_LPSPI_H

#include "stm32h7xx_hal.h"
//#include "stm32g0xx_hal.h"
//#include "stm32f1xx.h"
//#include "stm32f4xx.h"

//#define HardWare_SPI
#define Soft_SPI

#define SPIx                             SPI1
#define SPIx_CLK_ENABLE()                __HAL_RCC_SPI1_CLK_ENABLE()
#define SPIx_SCK_GPIO_CLK_ENABLE()       __HAL_RCC_GPIOB_CLK_ENABLE()
#define SPIx_MISO_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOB_CLK_ENABLE()
#define SPIx_MOSI_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOB_CLK_ENABLE()
 
#define SPIx_CS_GPIO_CLK_ENABLE()        __HAL_RCC_GPIOB_CLK_ENABLE()
/* Definition for SPIx Pins */
#define SPIx_SCK_PIN                     GPIO_PIN_3
#define SPIx_SCK_GPIO_PORT               GPIOB
#define SPIx_SCK_AF                      GPIO_AF5_SPI1
#define SPIx_MISO_PIN                    GPIO_PIN_4
#define SPIx_MISO_GPIO_PORT              GPIOB
#define SPIx_MISO_AF                     GPIO_AF5_SPI1
#define SPIx_MOSI_PIN                    GPIO_PIN_5
#define SPIx_MOSI_GPIO_PORT              GPIOB
#define SPIx_MOSI_AF                     GPIO_AF5_SPI1

#define SPIx_CS_PIN                      GPIO_PIN_6
#define SPIx_CS_GPIO_PORT                GPIOB





void Spi_delay(uint32_t count);
void LPSPI_Init(void);
void Lpspi_Start(void);
void Lpspi_Stop(void);
void Lpspi_Write(uint8_t datasize,uint8_t *data);
void Lpspi_Read(uint8_t datasize,uint8_t *data,uint8_t *Rxdata);
void SCLK_H(void);
void SCLK_L(void);
void SPI_Receive_Data( uint8_t *Data,uint8_t *Rxdata ,uint8_t Size);
void SPI_Transmit_Data(uint8_t *Data ,uint8_t Size);
#endif /* __BSP_LPSPI_H */

 

个人签名

希望做一些大家觉得好用的东西!

 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

板凳
 

使用Pyvisa调用ADX51X micropython驱动和万用表做对比

import time
import pyvisa
import serial
import logging
import random

TestStep=100

logging.basicConfig(level=logging.INFO, filename='coders.log', filemode='a',
                    format='%(asctime)s- %(levelname)s: %(message)s')

logLevel=logging.StreamHandler()
logLevel.setLevel(level="INFO")
logger = logging.getLogger('simpleExample')

rm = pyvisa.ResourceManager()
print(rm.list_resources())

ESP32 = serial.Serial('COM24', 115200, timeout=2)
#Pyvisa 必须等待
time.sleep(5)
#导入ADX51X文件
ESP32.write(b'import ADX51X\r\n')
#读取ID
ESP32.write(b'ADX51X.ID(1)\r\n')
Espmessage=ESP32.readlines()
print(Espmessage)


E_Source=rm.open_resource('USx')
DMM=rm.open_resource('GPIB0::4::INSTR')
WaveGen=rm.open_resource('GPIB0::10::INSTR')



for x in range(0,200):
    #设置需要采集的电压步数
    time.sleep(2)
    #万用表读取电压
    Voltage = DMM.query("MEAS:VOLT:DC?")
    #MicroPython读取电压
    ESP32.write(b'ADX51X.GetADCValue(1)\r\n')
    Espmessage = ESP32.readlines()
    #打印到Log
    logger.info(Voltage + "step:" + str(x)+str(Espmessage))
    print(Espmessage)
ESP32.close()


 

个人签名

希望做一些大家觉得好用的东西!

 
 
 

回复

6969

帖子

11

TA的资源

版主

4
 
呀我一看就知道是许总的大作,写得可真有水平呀,学习学习!

点评

和刘哥学习还差不多!  详情 回复 发表于 2024-3-6 19:08
 
 
 

回复

7175

帖子

2

TA的资源

版主

5
 

这芯片是几路的ADC?

点评

有好几款,2路到8路都有,内部Mux切  详情 回复 发表于 2024-3-6 19:09
 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

6
 
lugl4313820 发表于 2024-3-6 18:08 呀我一看就知道是许总的大作,写得可真有水平呀,学习学习!

和刘哥学习还差不多!


 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

7
 
wangerxian 发表于 2024-3-6 18:56 这芯片是几路的ADC?

有好几款,2路到8路都有,内部Mux切


点评

我刚好在ADC芯片选型,这芯片漂移怎么样?  详情 回复 发表于 2024-3-8 15:45
 
 
 

回复

704

帖子

0

TA的资源

纯净的硅(高级)

8
 

感谢分享,写驱动的都是大佬中的大佬啊。。。。

点评

感谢捧场  详情 回复 发表于 2024-3-7 12:05
 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

9
 
本帖最后由 xutong 于 2024-3-7 13:48 编辑
from machine import Pin, SoftSPI
import time
#寄存器定义
ADX51X_STATUS=0x00
ADX51X_MUX=0x01
ADX51X_ADCON=0x02
ADX51X_DRATE=0x03
ADX51X_IO=0x04
ADX51X_OFC0=0x05
ADX51X_OFC1=0x06
ADX51X_OFC2=0x07
ADX51X_FSC0=0x08
ADX51X_FSC1=0x09
ADX51X_FSC2=0x0A
ADX51X_CFG0=0x0B
ADX51X_CFG1=0x0C
ADX51X_CFG2=0x0D
ADX51X_CFG3=0x0E
ADX51X_CFG4=0x0F
ADX51X_CFG5=0x10
ADX51X_DEV_CFG=0x11
ADX51X_MOD_STAT=0x12
ADX51X_DEV_STAT=0x13
ADX51X_CMD_STAT=0x14

class Adc:
    def __init__(self):
        self.spi = SoftSPI(baudrate=200000, polarity=1, phase=0, mosi=Pin(16), miso=Pin(4), sck=Pin(2))
        self.CS = Pin(17, Pin.OUT)  # create output pin on GPIO16
    def ID(self):
        rxbuf = bytearray(3)  # create a buffer
        self.CS.value(1)
        time.sleep(1)
        self.CS.value(0)  # set pin to on/high
        txbuf = bytearray([16, 0, 0])
        self.spi.write_readinto(txbuf, rxbuf)  # write to MOSI and read from MISO into the buffer
        self.CS.value(1)  # set pin to on/high
        return rxbuf
    def Wreg(self,reg,data):
        txbuf=bytearray([0x50|reg, 0x00, data])
        self.CS.value(0)
        self.spi.write(txbuf)
        self.CS.value(1)
    def Rreg(self,reg):
        rxbuf=bytearray(3)
        txbuf=bytearray([0x10|reg, 0x00, 0x00])
        self.CS.value(0)
        self.spi.write_readinto(txbuf,rxbuf)
        self.CS.value(1)
        return rxbuf
    def GetADCValue(self,ch=0x01):
        self.CS = Pin(17, Pin.OUT)  # create output pin on GPIO16
        self.CS.value(1)  # set pin to on/high
        time.sleep(1)
        self.CS.value(0)  # set pin to on/high
        # 第4位设置电压采样输入p和n
        txbuf = bytearray([15, 81, 0, ch, 252, 0, 1])
        self.spi.write(txbuf)
        txbuf = bytearray([0, 0, 0])
        # 读取三个字节
        rxbuf = self.spi.read(3, 0)
        self.CS.value(1)  # set pin to on/high
        print(str(hex(rxbuf[0])) + "|" + str(hex(rxbuf[1])) + "|" + str(hex(rxbuf[2])))

修改成使用类,使用类以后代码简洁了许多。

import ADX51X
import time
ADX515=ADX51X.Adc()
#ADX515.GetADCValue(0x02)
print(ADX515.Rreg(ADX51X.ADX51X_IO))

调用类里面 的内容例子

 

个人签名

希望做一些大家觉得好用的东西!

 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

10
 
极限零 发表于 2024-3-7 10:43 感谢分享,写驱动的都是大佬中的大佬啊。。。。

感谢捧场

个人签名

希望做一些大家觉得好用的东西!

 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

11
 
差值单位(mV) 差值 DMM ADX51X
-2.258608 -2.26E-03 3.30E+00 3.300092528
-2.262994 -2.26E-03 3.30E+00 3.300102064
-2.275556 -2.28E-03 3.30E+00 3.300115176
-2.365404 -2.37E-03 3.30E+00 3.300209344
-2.188864 -2.19E-03 3.30E+00 3.300027564
-2.304144 -2.30E-03 3.30E+00 3.300143784
-2.248458 -2.25E-03 3.30E+00 3.300086568
-2.175758 -2.18E-03 3.30E+00 3.300018028
-2.258332 -2.26E-03 3.30E+00 3.300100872
-2.244574 -2.24E-03 3.30E+00 3.300093124
-2.360796 -2.36E-03 3.30E+00 3.300210536
-2.253072 -2.25E-03 3.30E+00 3.300103852
-2.252638 -2.25E-03 3.30E+00 3.300098488
-2.246084 -2.25E-03 3.30E+00 3.300093124
-2.165686 -2.17E-03 3.30E+00 3.300013856
-2.261346 -2.26E-03 3.30E+00 3.300118156
-2.26449 -2.26E-03 3.30E+00 3.30011458
-2.270618 -2.27E-03 3.30E+00 3.300116368
-2.265022 -2.27E-03 3.30E+00 3.300106832
-2.165198 -2.17E-03 3.30E+00 3.300003128
-2.282644 -2.28E-03 3.30E+00 3.300119944
-2.263036 -2.26E-03 3.30E+00 3.300100276
-2.260772 -2.26E-03 3.30E+00 3.300103852
-2.174618 -2.17E-03 3.30E+00 3.300015048
-2.186268 -2.19E-03 3.30E+00 3.300023988
-2.252648 -2.25E-03 3.30E+00 3.300089548
-2.296416 -2.30E-03 3.30E+00 3.300136036
-2.183518 -2.18E-03 3.30E+00 3.300035908
-2.185244 -2.19E-03 3.30E+00 3.300039484
-2.163414 -2.16E-03 3.30E+00 3.300006704
-2.13405 -2.13E-03 3.30E+00 3.29997154
-2.273778 -2.27E-03 3.30E+00 3.300110408
-2.274608 -2.27E-03 3.30E+00 3.300110408
-2.19356 -2.19E-03 3.30E+00 3.30004008
-2.25571 -2.26E-03 3.30E+00 3.30009372
-2.263608 -2.26E-03 3.30E+00 3.300098488
-2.264038 -2.26E-03 3.30E+00 3.300092528
-2.21352 -2.21E-03 3.30E+00 3.30004306
-2.386008 -2.39E-03 3.30E+00 3.300211728
-2.217674 -2.22E-03 3.30E+00 3.300051404
-2.255742 -2.26E-03 3.30E+00 3.300091932
-2.25359 -2.25E-03 3.30E+00 3.30008776
-2.309252 -2.31E-03 3.30E+00 3.300142592
-2.243498 -2.24E-03 3.30E+00 3.300080608
-2.210048 -2.21E-03 3.30E+00 3.300047828
-2.36725 -2.37E-03 3.30E+00 3.30021292
-2.172214 -2.17E-03 3.30E+00 3.300024584
-2.272542 -2.27E-03 3.30E+00 3.300115772
-2.139952 -2.14E-03 3.30E+00 3.299975712
-2.262396 -2.26E-03 3.30E+00 3.300094316
-2.273492 -2.27E-03 3.30E+00 3.300097892
-2.282526 -2.28E-03 3.30E+00 3.300115176
-2.277066 -2.28E-03 3.30E+00 3.300109216
-2.17848 -2.18E-03 3.30E+00 3.30000134
-2.204198 -2.20E-03 3.30E+00 3.300038888
-2.199484 -2.20E-03 3.30E+00 3.300027564
-2.196982 -2.20E-03 3.30E+00 3.300038292
-2.270134 -2.27E-03 3.30E+00 3.300113984
-2.227756 -2.23E-03 3.30E+00 3.300082396
-2.187962 -2.19E-03 3.30E+00 3.300032332
-2.22952 -2.23E-03 3.30E+00 3.30007882
-2.238732 -2.24E-03 3.30E+00 3.300088952
-2.259406 -2.26E-03 3.30E+00 3.300103256
-2.249278 -2.25E-03 3.30E+00 3.300092528
-2.168228 -2.17E-03 3.30E+00 3.300018028
-2.251208 -2.25E-03 3.30E+00 3.300107428
-2.255882 -2.26E-03 3.30E+00 3.300112792
-2.234998 -2.23E-03 3.30E+00 3.300086568
-2.234466 -2.23E-03 3.30E+00 3.300091336
-2.2688 -2.27E-03 3.30E+00 3.30012352
-2.191416 -2.19E-03 3.30E+00 3.300028756
-2.279798 -2.28E-03 3.30E+00 3.300119348
-2.25576 -2.26E-03 3.30E+00 3.30010564
-2.298938 -2.30E-03 3.30E+00 3.300146168
-2.36658 -2.37E-03 3.30E+00 3.3002159
-2.274968 -2.27E-03 3.30E+00 3.300125308
-2.277212 -2.28E-03 3.30E+00 3.300118752
-2.37043 -2.37E-03 3.30E+00 3.30020696
-2.245752 -2.25E-03 3.30E+00 3.300085972
-2.373218 -2.37E-03 3.30E+00 3.300214708
-2.34159 -2.34E-03 3.30E+00 3.30019504
-2.303144 -2.30E-03 3.30E+00 3.300164644
-2.274592 -2.27E-03 3.30E+00 3.300133652
-2.27625 -2.28E-03 3.30E+00 3.30012352
-2.23226 -2.23E-03 3.30E+00 3.30007882
-2.242046 -2.24E-03 3.30E+00 3.300085376
-2.284236 -2.28E-03 3.30E+00 3.300121136
-2.274088 -2.27E-03 3.30E+00 3.300110408
-2.379522 -2.38E-03 3.30E+00 3.300214112
-2.273858 -2.27E-03 3.30E+00 3.300098488
-2.174498 -2.17E-03 3.30E+00 3.299997168
-2.167488 -2.17E-03 3.30E+00 3.299997168
-2.263422 -2.26E-03 3.30E+00 3.300091932
-2.371292 -2.37E-03 3.30E+00 3.300208152
-2.284476 -2.28E-03 3.30E+00 3.300124116
-2.251938 -2.25E-03 3.30E+00 3.300089548
-2.2318 -2.23E-03 3.30E+00 3.30006392
-2.213102 -2.21E-03 3.30E+00 3.300047232
-2.384994 -2.38E-03 3.30E+00 3.300215304
-2.178074 -2.18E-03 3.30E+00 3.300015644
-2.256356 -2.26E-03 3.30E+00 3.300091336
-2.19701 -2.20E-03 3.30E+00 3.30003412
-2.286054 -2.29E-03 3.30E+00 3.300116964
-2.39156 -2.39E-03 3.30E+00 3.3002159
-2.197224 -2.20E-03 3.30E+00 3.300018624
-2.26963 -2.27E-03 3.30E+00 3.30009372
-2.160978 -2.16E-03 3.30E+00 3.299982268
-2.280068 -2.28E-03 3.30E+00 3.300098488
-2.263682 -2.26E-03 3.30E+00 3.300082992
-2.2658 -2.27E-03 3.30E+00 3.30008776
-2.262468 -2.26E-03 3.30E+00 3.300089548
-2.24744 -2.25E-03 3.30E+00 3.3000818
-2.182236 -2.18E-03 3.30E+00 3.300025776
-2.316464 -2.32E-03 3.30E+00 3.300158684
-2.2541 -2.25E-03 3.30E+00 3.30009372
-2.26087 -2.26E-03 3.30E+00 3.30010564
-2.239588 -2.24E-03 3.30E+00 3.300089548
-2.251706 -2.25E-03 3.30E+00 3.300100276
-2.257528 -2.26E-03 3.30E+00 3.300104448
-2.25236 -2.25E-03 3.30E+00 3.30010266
-2.252954 -2.25E-03 3.30E+00 3.300105044
-2.26158 -2.26E-03 3.30E+00 3.30012054
-2.21185 -2.21E-03 3.30E+00 3.30007584
-2.272416 -2.27E-03 3.30E+00 3.300144976
-2.256084 -2.26E-03 3.30E+00 3.300131864
-2.269866 -2.27E-03 3.30E+00 3.300144976
-2.284244 -2.28E-03 3.30E+00 3.300158684
-2.215584 -2.22E-03 3.30E+00 3.300084184
-2.250056 -2.25E-03 3.30E+00 3.300118156
-2.174332 -2.17E-03 3.30E+00 3.300035312
-2.303688 -2.30E-03 3.30E+00 3.300164048
-2.236962 -2.24E-03 3.30E+00 3.300091932
-2.362944 -2.36E-03 3.30E+00 3.300215304
-2.23685 -2.24E-03 3.30E+00 3.3000967
-2.239396 -2.24E-03 3.30E+00 3.300100276
-2.219318 -2.22E-03 3.30E+00 3.300077628
-2.297268 -2.30E-03 3.30E+00 3.300149148
-2.36558 -2.37E-03 3.30E+00 3.3002159
-2.254866 -2.25E-03 3.30E+00 3.300109216
-2.352546 -2.35E-03 3.30E+00 3.300207556
-2.243908 -2.24E-03 3.30E+00 3.300098488
-2.251616 -2.25E-03 3.30E+00 3.300106236
-2.282592 -2.28E-03 3.30E+00 3.300139612
-2.308016 -2.31E-03 3.30E+00 3.300174776
-2.273966 -2.27E-03 3.30E+00 3.300136036
-2.155864 -2.16E-03 3.30E+00 3.300021604
-2.279808 -2.28E-03 3.30E+00 3.300143188
-2.283896 -2.28E-03 3.30E+00 3.300141996
-2.261594 -2.26E-03 3.30E+00 3.300119944
-2.251212 -2.25E-03 3.30E+00 3.300103852
-2.248376 -2.25E-03 3.30E+00 3.300097296
-2.239372 -2.24E-03 3.30E+00 3.300080012
-2.199386 -2.20E-03 3.30E+00 3.300043656
-2.158394 -2.16E-03 3.30E+00 3.300000744
-2.28655 -2.29E-03 3.30E+00 3.3001265
-2.252526 -2.25E-03 3.30E+00 3.300085376
-2.258786 -2.26E-03 3.30E+00 3.300100276
-2.232184 -2.23E-03 3.30E+00 3.300081204
-2.280056 -2.28E-03 3.30E+00 3.300121136
-2.286432 -2.29E-03 3.30E+00 3.300124712
-2.228994 -2.23E-03 3.30E+00 3.300078224
-2.16524 -2.17E-03 3.30E+00 3.30001326
-2.362232 -2.36E-03 3.30E+00 3.300211132
-2.27407 -2.27E-03 3.30E+00 3.30013246
-2.36151 -2.36E-03 3.30E+00 3.3002159
-2.293042 -2.29E-03 3.30E+00 3.300148552
-2.287808 -2.29E-03 3.30E+00 3.300137228
-2.254486 -2.25E-03 3.30E+00 3.300103256
-2.26426 -2.26E-03 3.30E+00 3.30011756
-2.279968 -2.28E-03 3.30E+00 3.300131268
-2.268854 -2.27E-03 3.30E+00 3.300119944
-2.233792 -2.23E-03 3.30E+00 3.300088952
-2.289618 -2.29E-03 3.30E+00 3.300140208
-2.298526 -2.30E-03 3.30E+00 3.300153916
-2.251538 -2.25E-03 3.30E+00 3.300104448
-2.330756 -2.33E-03 3.30E+00 3.300177756
-2.256938 -2.26E-03 3.30E+00 3.300107428
-2.239258 -2.24E-03 3.30E+00 3.300086568
-2.278984 -2.28E-03 3.30E+00 3.300128884
-2.24002 -2.24E-03 3.30E+00 3.3000818
-2.247584 -2.25E-03 3.30E+00 3.300090144
-2.201556 -2.20E-03 3.30E+00 3.300046636
-2.30553 -2.31E-03 3.30E+00 3.30013544
-2.192578 -2.19E-03 3.30E+00 3.300021008
-2.229266 -2.23E-03 3.30E+00 3.300058556
-2.297504 -2.30E-03 3.30E+00 3.300119944
-2.15155 -2.15E-03 3.30E+00 3.2999775
-2.24699 -2.25E-03 3.30E+00 3.30007584

ADX51X 默认SPS和万用表数据对比

个人签名

希望做一些大家觉得好用的东西!

 
 
 

回复

7175

帖子

2

TA的资源

版主

12
 
xutong 发表于 2024-3-6 19:09 有好几款,2路到8路都有,内部Mux切

我刚好在ADC芯片选型,这芯片漂移怎么样?

点评

温度漂移? 还是使用外部基准比较合适  详情 回复 发表于 2024-3-8 21:51
 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

13
 
wangerxian 发表于 2024-3-8 15:45 我刚好在ADC芯片选型,这芯片漂移怎么样?

温度漂移? 还是使用外部基准比较合适

个人签名

希望做一些大家觉得好用的东西!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表