基于战舰V3的MPU6050六轴陀螺仪实验

发布者:静雅心灵最新更新时间:2023-01-27 来源: eefocus关键字:MPU6050 手机看文章 扫描二维码
随时随地手机看文章

陀螺仪的分类

3轴传感器指的是3轴的加速度,根据这个加速度我们解算出XY两轴的角度。


6轴传感器指的是3轴的加速度和3轴角速度,根据这两个数据我们解算出XYZ三轴的角度(Z轴是角速度积分解算,所以存在累计误差)。


9轴传感器指的是3轴的加速度、3轴角速度和3轴磁场,根据这三个数据我们解算出XYZ三轴的角度(Z轴是磁场解算,相当于电子罗盘,但受磁场干扰的影响),九轴传感器彻底解决了Z轴角度的漂移,使用前需磁场校准,使用时原理磁场干扰区域。


10轴传感器指的是3轴的加速度、3轴角速度、和3轴磁场气压,功能比9轴传感器多了气压和高度,十轴传感器彻底解决了Z轴角度的漂移,使用前需磁场校准,使用时原理磁场干扰区域。


FIFO存储器简介

在系统设计中,以增加数据传输率、处理大量数据流、匹配具有不同传输率的系统(就是输入输出速度可以不相同)为目的而广泛使用FIFO存储器,从而提高了系统性能。FIFO存储器是一个先入先出的双口缓冲器,即第一个进入其内的数据第一个被移出,其中一个是存储器的输入口,另一个口是存储器的输出口。


你可以将FIFO看作是一个队列缓冲区,外部传感器不断采集数据发送至MCU,MCU被动接收并且处理数据,这就导致MCU的数据接收处理能力要慢于外部传感器的数据采集能力。但是如果MCU一次处理多个数据那么MCU处理输出的效率就上去了,这样,MCU与外部传感器就会达到一个平衡:MCU处理输出的速度=传感器向MCU发送数据的速度。这样做也有利于降低功耗,一个一个的处理会导致MCU频繁处于运行状态,但是如果每隔一段时间处理一次数据,那么这一段时间内数据存储器消耗的功率肯定要小于MCU工作所消耗的功率,总体来说是降低了系统功耗。


MPU6050引脚简介

image.png

MPU6050与MCU的IIC通信

当我们实现I2C的通信函数之后就可以与带有I2C通信接口的芯片进行通信,那么怎样通信呢?其实很简单——你可以把每个芯片比做为一个巨大的储物柜,储物柜里每个抽屉里存着相应的东西,你想让佣人帮你去拿个东西,只要告诉佣人对应的抽屉号就行了。这里I2C总线相当于这个佣人,每个抽屉相当于芯片中的寄存器,抽屉号相当于寄存器地址。当你想设置芯片的某些属性时是向对应的寄存器内写数据,当想从芯片内获取相关数据时,就要通过I2C向对应的地址写数据然后接收芯片返回的数据。这里的8~31行为MPU-6050芯片内几个常用的寄存器地址,前四个常用来作为设置芯片工作属性,15~28共14个寄存器地址用来获取传感器的3轴加速度、3轴角速度和温度的数据(这里每一种信息都包括H和L两位,是由于8位表示不完该数据,于是分高低两部分)

系统架构

系统中的辅助IIC的功能如下:

从上图可以看到辅助IIC用于MPU6050作为主机同最多4个IIC从机进行通信。


当MPU6050作为IIC从机与MCU主机通信时,AD0的高低电平影响MPU6050的IIC的从机地址:


C语言中有符号数的表示

有符号数的表示方法是由硬件决定(从寄存器中读取16位有符号数的时候会发现),而不是由C决定的。有三种表示方法:


计算机中的负数是以其补码形式存在的补码=原码取反+1,一个字节有8位可以表示的数值范围在-128到+127(unsigned char类型所表示的数值范围),用二进制表示也就是 10000000 - 01111111(注意:最高位表示符号)最高位是1的都是负数 最高位是0的都是正数。


例如:-7 原码是 10000111 然后取反(注意:最高位是符号位,数值位仅为[7:0]位,只有数值位才取反)得11111000,那+1得11111001,那么-7的二进制数就是 11111001。


相反,我们由负数的反码得到十进制的负数,也可以逆操作:取反+1,例如:11111001的数据类型为有符号数据类型,对数值位[7:0]取反后为10000110,再+1得到10000111,最终化为十进制有符号数值为-7。(符号位为1,数值为负数,否则为正数)。


故计算机中有符号数据的补码为:


1. 正数的补码:正数本身


2. 负数的补码:符号位不变,数值位取反再加一。


MPU6050寄存器简介

0X0D~0X10-自检寄存器

这里无需知道如何自检,只需知道自检的原理是什么即可。

 

自检测功能是允许用户自己去测试MPU6050的陀螺仪和加速度计的机械电气部分是否正常的一个功能,其中STR是自检测功能开启后设备自己测试的到的一个值,FT是厂家测试的到的一个值,如果6050的响应值相对于厂家测试值的百分比不再范围内(%=(STR-FT)/FT),则说明芯片测的数据不正常


开始自检之后Gyroscope就会测量地转偏向,Gyroscope Sensor 就会测量这个偏向;Accelerometer就会用电子运动产生激励,Accelerometer Sensor就会测量这个加速度。两个测量值与原值相减得到一个差值,差值再和预设值比较,范围内则通过自检,范围外则不通过。


注意:自检是要静止的,自检可以通过6050的输出数据判断芯片正不正常。


陀螺仪的STR值得测量原理如下所示:

就是相当于一个校准过程,我们先自己测量一个准确值,然后对比器件输出得值,看看偏差是否在合理范围之内。以Xg为例,Xg的[4:0]位存在于在0X0D寄存器中,我们将测量好的值放入0X0D寄存器中,然后器件会自动计算出结果和自身的测量值比较,看看是否在容许误差范围之内。


加速度计的STR值得测量原理如下所示:


就是相当于一个校准过程,我们先自己测量一个准确值,然后对比器件输出得值,看看偏差是否在合理范围之内。那Xa举例,Xa的[4:2]和[1:0]分开放置在两个寄存器中,我们要将我们测量得到的由5位二进制数组成的Xa的[4:2]和[1:0]位分别写入0X10和0X0D寄存器中。然后器件会自动计算出结果和自身的测量值比较,看看是否在容许误差范围之内。


0X19-采样频率分频寄存器


该寄存器的输入参数为8位无符号二进制数,该寄存器设定了采样频率与输出频率的关系:


器件的输出频率=采样频率/(SMPLRT_DIV+1)


我们要知道陀螺仪和加速度计的输出频率是不一样的,因此分频之后采样频率也不一样:


1. Gyroscope Output Rate = 8kHz when the DLPF is disabled (DLPF_CFG = 0 or 7), and 1kHz when the DLPF is enabled;


2. The accelerometer output rate is 1kHz。


这里陀螺仪的输出频率,是1Khz或者8Khz,与数字低通滤波器(DLPF)的设置有关,当DLPF_CFG=0/7的时候,频率为8Khz,其他情况是1Khz。而且DLPF滤波频率一般设置为采样率的一半。采样率,我们假定设置为50Hz,那么:SMPLRT_DIV=1000/50-1=19。


既然陀螺仪和加速度不可以同步采样,那器件是如何轮询陀螺仪和加速度计从而读取数据的呢?


说明书中有这样一句话:

这句话的含义如下:


假设加速度计,陀螺仪,FIFO存储器访问速度(=输出频率)分别为1KHz,2KHz,2KHz,那么访问顺序如下:


第一次,先访问加速度计,陀螺仪,FIFO存储器;


第二次,只访问陀螺仪,FIFO存储器,因为这两者的访问速度比加速度计快一倍;


第三次,在访问加速度计,陀螺仪,FIFO存储器,相当于总体访问周期是1/2KHz。


0X1A-配置寄存器


这个寄存器的作用就是:


This register configures the external Frame Synchronization (FSYNC) pin sampling and the Digital Low Pass Filter (DLPF) setting for both the gyroscopes and accelerometers.(为陀螺仪和加速度计配置外部帧同步采样引脚FSYNC和DLPF低通滤波器设置)。


我们不禁要问:为什么我们要有低通滤波器,加速度和旋转角度不是测得多少就是多少吗?


由于我们的动作速度都是低频的,但是测量过程中会夹杂着高频杂波,低通的目的只是过滤掉高频振动但是对正常的转动还是会如实反应的。传感器是把轴上的振动滤掉了,电机倒置底座产生一个100hz,均值为0的振动,低通滤波就把振动滤掉了。但是如果电机转动的时候,机体进行10度/秒的转动,这个10度任然会被测量到。


我们这里只关注DLPF_CFG[2:0]位:

DLPF_CFG[2:0]位为3位无符号整数位,用于设置低通滤波器的带宽,也就是说我们可以认为的配置过滤杂波的范围来去除我们不想要的频带。我们学过信号与系统的同学都知道“香农采样定理”,我们的采样频率一定要大于低通滤波器截止频率的2倍。


0X18-陀螺仪配置寄存器

在前面我们提到过自检寄存器,但是自检寄存器中的参数是让我们输入的(我们拿软件测量得到的当前参数),并没有使能器件本身测量的功能,不将器件自身测量值与我们人工测量的至做对比,怎能知道器件是否合格呢?这个寄存器中包含了“使能器件测量角度和加速度并且将自身测量值和我们人工测量的值进行对比”的位:



自检有关的位我们可能通常用不到,但是FS_SEL[1:0]位我们需要了解并使用:

这个位用于设置陀螺仪可测量的范围,正如厂家手册中规定的参数含义:

0X1C-加速度计配置寄存器

与陀螺仪配置寄存器大同小异,也包含了“使能器件测量角度和加速度并且将自身测量值和我们人工测量的值进行对比”的位和“用于设置测量范围”的位,AFS_SEL[1:0]测量范围的位:


2^16的分辨率和测量范围代表了测量的灵敏度:


该寄存器我们只关心AFS_SEL[1:0]这两个位,用于设置加速度传感器的满量程范围:0,±2g;1,±4g;2,±8g;3,±16g;我们一般设置为0,即±2g,因为加速度传感器的ADC也是16位,所以得到灵敏度为:65536/4=16384LSB/g。


0X23-FIFO使能寄存器

我们前面介绍过,FIFO存储器是用来存储数据的,等到存储到一定程度就成段的向MCU发送数据。这个寄存器就是表明有哪些数据可以存储进FIFO存储器:

我们这里只关注:ACCEL_FIFO_EN(代表加速度计的数据),ZG_FIFO_EN,XG_FIFO_EN,YG_FIFO_EN,TEMPG_FIFO_EN这几个位,位被置一代表采样得到的相应数据可以先存入FIFO存储器,然后在成段的发动给MCU。


0X6B-电源管理寄存器1

CLKSEL[2:0]代表了时钟来源:


这里我们选择内部8MHz作为器件工作的时钟源,但是我们知道:内部时钟源易受温漂影响,不准确,尤其是测量角度时稍有偏差就会对飞机运行姿态产生重大影响,我们推荐使用外部时钟源来克服温漂问题。


DEVICE_RESET 设置为1时,该位将所有内部寄存器复位为默认值。一旦复位完成,该位自动清零。每个寄存器的默认值可以在第3节找到。


SLEEP:当该位置1时,该位将MPU-60X0置于睡眠模式。


CYCLE:当该位设置为1且SLEEP被禁止时,MPU-60X0将循环。在睡眠模式和唤醒之间以LP_WAKE_CTRL(电源管理寄存器2)确定的速率从活动传感器获取单个样本数据。低功耗的原因就在于“MPU6050此时不是一种处于工作状态”,而是“按一定频率一会睡眠一会工作”,这样间接性的降低了功耗。


TEMP_DIS:设置为1时,该位禁用温度传感器。


0X6C-电源管理寄存器2

唤醒频率设置位LP_WAKE_CTRL[1:0]:

其余各个位含义如下:

该寄存器的LP_WAKE_CTRL用于控制低功耗时的唤醒频率,剩下的6位,分别控制加速度和陀螺仪的x/y/z轴是否进入待机模式,这里我们全部都不进入待机模式,所以全部设置为0 即可。


如果我们想要MPU6050工作在低功耗模式下,我们做如下配置:

0X72~0X73-FIFO存储器计数寄存器

 

这个寄存器用于表明存储在FIFO缓冲区中的字节数。这个数字又是可以从FIFO缓冲区读取的字节数。


0X74-FIFO读写寄存器

参数介绍如下:

0X75-“我是谁”寄存器

用于表明从IIC地址(不包含最低位,最低位取决于AD0引脚的电平)的。


0X3B~0X40-加速度计测量值保存寄存器

这6个寄存器分别为3组:0X3B和0X3C,0X3D和0X3E,0X3F和0X40,分别表征X,Y,Z轴的加速度测量值,但是注意这些值的输出形式:


当我们将低8位和高8位数据组合成16位数据时,由于加速度有正负之分,因此这16位数据为有符号的补码形式,我们要输出一个十进制数值,就必须了解C语言的数据编码格式:C语言再学习 -- 负数_不积跬步,无以至千里-CSDN博客_c语言负数


0X41~0X42-温度测量值保存寄存器

这个温度输出值也不是实际的温度输出值,需要进行换算,这个输出的温度值为有符号的16位整形数据:


其与实际温度的关系如下:


0X43~0X48-陀螺仪角度测量值保存寄存器

经过将“高八位和低八位组合”之后可得到16位数据,这16位数据的格式如下:


如此看来,这16位数据也为补码的形式。


0X68-信号复位寄存器

该寄存器用于重置陀螺仪、加速度计和温度传感器的模拟和数字信号路径。复位将使信号路径模数转换器和滤波器恢复到其上电前的配置。其参数如下:


 

这里要注意:这个寄存器只复位角度测量,加速度测量,温度测量的信号传输通道,并没有清空陀螺仪,温度,加速度计相关寄存器配置。


0X6A-用户控制寄存器

该寄存器相较于信号复位寄存器的特点就在于:这个寄存器可以清空陀螺仪,温度,加速度计相关寄存器配置。各个位含义如下:

我们这里只关心陀螺仪,加速度计,温度传感器的复位位(SIG_COND_RESET)和IIC主模式使能位(I2C_MST_EN)。


1. 陀螺仪,加速度计,温度传感器的复位位(SIG_COND_RESET)一旦被置一,陀螺仪,加速度计,温度传感器的信号传输通道和相关寄存器全部被复位,恢复至上电前的状态;


2. 我们想要MPU6050工作在IIC从模式下,作为MCU的从设备,因此要将IIC主模式使能位(I2C_MST_EN)置0。


0X37-中断配置寄存器

各个位的含义如下:




这里要注意:INT_RD_CLEAR位,该位置1表明:读中断标志位可以清0该位;如果该位置0则表明:任何读操作都会清楚所有中断标志位。INT_LEVEL位表示:INT引脚的有效电平是高电平还是低电平。LATCH_INT_EN位表示:置0——如果中断事件发生,则中断引脚出现一个宽度为50us的脉冲;置1——当中断事件来临时,INT引脚一直保持有效电平。


0X38-中断使能寄存器


参数含义如下:

0X3A-中断状态寄存器



我们这里重点介绍:FIFO_OFLOW_INT位,DATA_RDY_INT位,MOT_INT位,这三个位分别表示着“FIFO存储器溢出中断标志位”,“数据就绪中断标志位(表明MPU6050中所有寄存器中的数据准备就绪,MCU可以进行读操作)”,“测量值超过阈值中断”。


MPU6050代码简介

MCU的读/写操作

开始标志(S)发出后,主设备会传送一个 7 位的 Slave 地址,并且后面跟着一个第 8位,称为 Read/Write 位。R/W 位表示主设备是在接受从设备的数据还是在向其写数据。然后,主设备释放 SDA 线,等待从设备的应答信号(ACK)。每个字节的传输都要跟随有一个应答位。应答产生时,从设备将 SDA 线拉低并且在 SCL 为高电平时保持低。数据传输总是以停止标志(P)结束,然后释放通信线路。


然而,主设备也可以产生重复的开始信号去操作另一台从设备,而不发出结束标志,此时无应答信号NACK就相当于STOP停止信号了。综上可知,所有的 SDA 信号变化都要在 SCL 时钟为低电平时进行,除了开始和结束标志。


信号标识的含义:


写时序如下所示:


对于写操作来说,第一个DATA其实是寄存器地址,我们在写操作中将写入的寄存器地址也算入数据DATA的范畴。


如果要写 MPU-60X0 寄存器,主设备除了发出开始标志(S)和地址位,还要加一个R/W 位,0 为写,1 为读。在第 9 个时钟周期(高电平时),MPU-60X0 产生应答信号。然后主设备开始传送寄存器地址(RA),接到应答后,开始传送寄存器数据,然后仍然要有应


答信号,依次类推。


单字节写:


//IIC写一个字节  

//reg:寄存器地址  

//data:数据  

//返回值:0,正常  

//    其他,错误代码  

u8 MPU_Write_Byte(u8 reg,u8 data)  

{  

    MPU_IIC_Start();  

    MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令  

    if(MPU_IIC_Wait_Ack())  //等待应答  

    {  

        MPU_IIC_Stop();  

        return 1;  

    }  

    MPU_IIC_Send_Byte(reg); //写寄存器地址  

    MPU_IIC_Wait_Ack();     //等待应答  

    MPU_IIC_Send_Byte(data);//发送数据  

    if(MPU_IIC_Wait_Ack())  //等待ACK  

    {  

        MPU_IIC_Stop();  

        return 1;  

    }  

    MPU_IIC_Stop();  

    return 0;  

}  


连续写:

//IIC连续写  

//addr:器件地址  

//reg:寄存器地址  

//len:写入长度  

//buf:数据区  

//返回值:0,正常  

//    其他,错误代码  

u8 MPU_Write_Len(u8 addr,u8 reg,u8 len,u8 *buf)  

{  

    u8 i;  

    MPU_IIC_Start();  

    MPU_IIC_Send_Byte((addr<<1)|0);//发送器件地址+写命令  

    if(MPU_IIC_Wait_Ack())  //等待应答  

    {  

        MPU_IIC_Stop();  

        return 1;  

    }  

    MPU_IIC_Send_Byte(reg); //写寄存器地址  

    MPU_IIC_Wait_Ack();     //等待应答  

    for(i=0; i    {  

        MPU_IIC_Send_Byte(buf[i]);  //发送数据  

        if(MPU_IIC_Wait_Ack())      //等待ACK  

        {  

            MPU_IIC_Stop();  

            return 1;  

        }  

    }  

    MPU_IIC_Stop();  

    return 0;  


 


读时序中信号标识的含义如下:



如果要读取 MPU-60X0 寄存器的值,首先由主设备产生开始信号(S),然后发送从设


备地址位和一个写数据位,然后发送寄存器地址,才能开始读寄存器。紧接着,收到应答信


号后,主设备再发一个开始信号,然后发送从设备地址位和一个读数据位。然后,作为从设


备的 MPU-60X0 产生应答信号并开始发送寄存器数据。通信以主设备产生的拒绝应答信号


(NACK)和结束标志(P)结束。拒绝应答信号(NACK)产生定义为 SDA 数据在第 9 个


时钟周期一直为高。


单字节读时序:

//IIC读一个字节  

//reg:寄存器地址  

//返回值:读到的数据  

u8 MPU_Read_Byte(u8 reg)  

{  

    u8 res;  

    MPU_IIC_Start();  

    MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令  

    MPU_IIC_Wait_Ack();     //等待应答  

    MPU_IIC_Send_Byte(reg); //写寄存器地址  

    MPU_IIC_Wait_Ack();     //等待应答  

    MPU_IIC_Start();  

    MPU_IIC_Send_Byte((MPU_ADDR<<1)|1);//发送器件地址+读命令  

    MPU_IIC_Wait_Ack();     //等待应答  

    res=MPU_IIC_Read_Byte(0);//读取数据,发送nACK  

[1] [2]
关键字:MPU6050 引用地址:基于战舰V3的MPU6050六轴陀螺仪实验

上一篇:基于战舰V3的NRF24L01模块的原理剖析及应用
下一篇:STM32的USARTx中u3_printf函数解析

推荐阅读最新更新时间:2024-11-12 10:54

采用STM32设计的四轴飞行器飞控系统
1、引言 四轴飞行器是一种结构紧凑、飞行方式独特的垂直起降式飞行器,与普通的飞行器相比具有结构简单,故障率低和单位体积能够产生更大升力等优点,在军事和民用多个领域都有广阔的应用前景,非常适合在狭小空间内执行任务。因此四旋翼飞行器具有广阔的应用前景,吸引了众多科研人员,成为国内外新的研究热点。 本设计主要通过利用惯性测量单元(IMU)姿态获取技术、PID电机控制算法、2.4G无线遥控通信技术和高速空心杯直流电机驱动技术来实现简易的四轴方案。整个系统的设计包括飞控部分和遥控部分,飞控部分采用机架和控制核心部分一体设计增加系统稳定性,遥控部分采用模拟摇杆操作输入使操作体验极佳,两部分之间的通信采用2.4G无线模块保证数据稳定传输。飞行控制
[单片机]
采用STM32设计的四轴飞行器飞控系统
关于基于STM8S,MPU6050驱动的说明及程序
这个MPU6050使用的是IIC驱动的,而在具体电路图中没有使用STM8S自带的硬件IIC接口,所使用的是模拟IIC, 需要指出的是,在STM8S,IO配置的时候,SDA,对于挂SDA的IO来说,在STM8S的处理器上IO是没有真正的开漏输出功能的, 也就是将该IO配置成开漏输出的时候,IO高低电平输出实际是没有变化的,所以在IO具体输出或者读取状态的时候,必须切换IO模式, 另外需要注意的是,在配置IO的输出模式的时候,最好直接使用寄存器操作,如果使用 g_sda_output(); Handler_G_SDA_L;,也就是库函数操作的话,那么在配置成输出模式之后,并且接下来的代码立即输出高或者低的时候,
[单片机]
MPU6050传感器模块初始化教程
本期介绍的是六轴传感器6050,之前在网上CSDN上看了许多关于MPU6050的介绍,感觉许多都是空话,真正实用的东西并不多,下面该模块的程序我是先看的正点原子stm32单片机的例程之后一点一点移植到FPGA中的。这里只移植了初始化和读取陀螺仪原始数据部分的程序,关于DMP嘛,因为个人能力不够移植不了。 01六轴传感器 本期介绍的ATK-MPU6050是一款高性能三轴加速度加三轴陀螺仪的六轴传感器模块,该模块采用InvenSense公司的MPU6050芯片作为核心,该芯片内部整合了3轴陀螺仪和3轴加速度传感器,并可利用自带的数字运动处理器DMP硬件加速引擎,该模块与外界的通信方式为IIC协议,向应用后台输出姿态解算后的数据。
[单片机]
<font color='red'>MPU6050</font><font color='red'>六</font><font color='red'>轴</font>传感器模块初始化教程

推荐帖子

wince bootloader问题
我购买了一块yc2440的开发板,硬件构成:s3c2440+64Mnandflash+64Mram,其他的都不重要了,反正它是用nandflash启动的。我把开发板内存和nandflash都扩容了一倍,成了128M,现在想自己开发一个bootloader,不知如何下手,请各位大侠指点一下。原开发板的bootloader非常复杂,具体描述如下,首先用并口烧写Nb1.bin,bn2.bin,u2440mon.bin三个文件,然后跟pc机连接串口和usb口,这时nb1启动,按U键进入u2440
yangcheng WindowsCE
MSP430芯片有什么加密方法?
芯片内有独一无二的ID可以读取吗?或者可以烧熔丝阻值非法读取之类的?谢谢!MSP430芯片有什么加密方法?
dsp_comm 微控制器 MCU
RF设计工具 ----- 很不错的
地址:http://leleivre.com/rftools.htmlRF设计工具-----很不错的非常实用的工具
dontium RF/无线
分享MSP430F5529库函数
笔者大学期间写的MSP430F5529库函数,期间断断续续写了快一年,从刚开始的1.0版本到最后的2.+版本,最后才有了让笔者满意的库函数。MSP430是一款中低端的单片机,以至于很多人认为它不需要库函数,选择使用手写代码开发,然而,笔者却不这么认为,在库函数完成后,笔者使用该单片机开发时相比之前的速度提升了很多倍,当然一个不可忽略的原因是我更熟悉这单片机了。库函数几乎包括了单片机上所有的外设模块,除此之外,笔者还提供了常用的OLED,LCD,LED,KEY,
fish001 微控制器 MCU
有人用过AD5724R或者AD57xx系列芯片吗。。。
有人用过AD5724R或者AD57xx系列芯片吗。。。。具体怎么控制的,我看芯片资料,怎么操作都不对。。先写输出范围寄存器,再写电源控制寄存器,然后再写DAC寄存器发数据。。那个控制寄存器怎么用。。我是lpc2132通过spi控制AD5724R转换。。哪位用过给点指导。。有程序例子最好。。有人用过AD5724R或者AD57xx系列芯片吗。。。没有用过,顶一下楼主搞定了吗?我现在也要用AD5724,但是没有头绪呢 你搞定了吗?我的搞定了楼主求指教,我出现跟你一样的问题,加下我Q827
hj1013 单片机
【2024 DigiKey 创意大赛】”双光融合“智能热像仪 作品总结与提交
双光融合智能热像仪作者:JOEYCH 作品简介本项目为一款双光融合智能热像仪,双光融合指的是可见图像与热图像相融合。该设备硬件上基于高性能STM32H7微控制器,软件上基于使用micropython语言的OPENMV开源项目和TensorFlowLiteAI模型框架,实现了图像采集的高效率和手写数字分析的高精度。听取秦天大佬的建议,添加LCD触摸屏提供直观的用户交互体验,支持模式的快速切换和实
JOEYCH DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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