51 单片机实战教程(15 外围芯片驱动程序之AD7683芯片驱动)

        前面已经介绍过AD芯片CS1237,这里再介绍一款ADC芯片AD7683。AD7683是一款16bit ADC芯片,虽然位数比CS1237少,但速度比CS1237快,标称是100kSPS。供电电压为2.5~5.5V,封装有MSOP与QFN两种。通信接口也是串口,兼容SPI/QSPI/MICROWIRE。应用场景为:数据获取、仪器仪表、医药仪器、电池供电的设备等。这款ADC芯片也比较适合用51单片机系统。它的管脚图如下:

51 单片机实战教程(15 外围芯片驱动程序之AD7683芯片驱动)_第1张图片

Pin 脚功能如下:

51 单片机实战教程(15 外围芯片驱动程序之AD7683芯片驱动)_第2张图片

SPI的时序图如下:

51 单片机实战教程(15 外围芯片驱动程序之AD7683芯片驱动)_第3张图片

 相关时间参数如下:

51 单片机实战教程(15 外围芯片驱动程序之AD7683芯片驱动)_第4张图片 51 单片机实战教程(15 外围芯片驱动程序之AD7683芯片驱动)_第5张图片

现在来写他的驱动库函数。新建两个文件分别以ad683.h,ad683.c存入C51 Template文件夹下Library文件夹中。完成后的头文件如下:

/*ad7683.h
  Designed by Bill Liu
  Version 0.0 
  Modified last by Bill Liu on 12/12/2021
*/
#ifndef __AD7683_H__
#define __AD7683_H__


#include "mtype.h"
#include "delay.h"
#include "myport.h"//AD7863DCLK,AD7863CS,AD7863DOUT were defined

extern FSYSCLOCK FSCLK; //FSCLK was defined in main.h

/****************************************
Function: AD7683_InClk();
Return value: void
Discription: AD7683 input a clk
Example:
  AD7683_InClk();
****************************************/
void AD7683_InClk();

/****************************************
Function: AD7683_GetResult();
Return value: ui16
Discription: get AD7683 adc result
Example:
  ui16 tem = AD7683_GetResult();
****************************************/
ui16 AD7683_GetResult();

#endif

现在来完成源代码,在完成源代码之前,写注意这点:

51 单片机实战教程(15 外围芯片驱动程序之AD7683芯片驱动)_第6张图片

 完成后的源代码如下:

/*ad7683.c
  Designed by Bill Liu
  Version 0.0 
  Modified last by Bill Liu on 12/12/2021
*/

#include "ad7683.h"

void AD7683_InClk()
{
	
		AD7863DCLK = 0;
		Delayxus(1,FSCLK);
		AD7863DCLK = 1;
		Delayxus(1,FSCLK);
}
//End of AD7683_InClk()

ui16 AD7683_GetResult()
{
	  ui8 i = 0;
		ui16 result = 0;
		AD7863CS = 0;
		Delayxus(1,8);
		for(i = 0; i< 6; i++)
		{
			AD7683_InClk();
		}
		for(i = 0; i < 16; i++)
		{
			result = result << 1;
			AD7683_InClk();
			if(AD7863DOUT)
				result++;
		}
		AD7863CS = 1;
		AD7683_InClk();
		AD7683_InClk();
	return result;
}
//End of AD7683_GetResult()

以上演示代码及AD7683的datasheet已打包上传到CSDN,文件名为AD7683 Driver Code.rar,如需离线查看可去下载。

你可能感兴趣的:(C语言,Keill,C,单片机,嵌入式硬件)