单片机学习笔记.AD/DA(略含有SPI,用的是普中开发板上的XPT2046芯片)

AD/DA基础知识

硬件电路:


模电运放知识回顾:

虚短(Virtual Short)

  • 定义:运放同相输入端(+)和反相输入端(-)的电位近似相等,即V+= V-,仿佛两个输入端短路,但实际上并未真正连接(无电流通过),因此称为 "虚短"。

虚断(Virtual Open)

  • 定义:运放同相输入端和反相输入端的输入电流近似为零,即 I+ = I- ,仿佛两个输入端开路,但实际上仍有微弱电流(理想运放忽略),因此称为 "虚断"。
    eg. 分析:



DA原理:

T型电阻网络DA:

PWM型DA:


SPI协议:

这里时序图以XPT2046为例:

硬件原理图:

引脚定义:

cpp 复制代码
sbit XPT2046_CS=P3^5;
sbit XPT2046_DCLK=P3^6;
sbit XPT2046_DIN=P3^4;
sbit XPT2046_DOUT=P3^7;

命令字:

选定对应通道:

在头文件里对命令字进行宏定义 :

cpp 复制代码
#define XPT2046_XP_8  0x9c         //1001 1;8位1:单端00
#define XPT2046_YP_8  0xDc
#define XPT2046_VBAT_8 0xAc
#define XPT2046_AUX_8 0xEc

#define XPT2046_XP_12  0x94        //1001 1;8位1:单端00
#define XPT2046_YP_12  0xD4
#define XPT2046_VBAT_12 0xA4
#define XPT2046_AUX_12 0xE4

XPT2046读取AD值:

cpp 复制代码
unsigned int XPT2046_ReadAD(unsigned char Command)//s=1开始检测,a2a1a0选地址
{
	unsigned char i;
	unsigned int ADValue;
	XPT2046_CS=0;
	XPT2046_DCLK=0;
	for(i=0;i<8;i++)
	{
		XPT2046_DIN=Command&(0x80>>i);
	  XPT2046_DCLK=1;
  	Delayms(1);
	  XPT2046_DCLK=0;
	}
	for(i=0;i<16;i++)
	{
	  XPT2046_DCLK=1;
		Delayms(1);
	  XPT2046_DCLK=0;
	  if(XPT2046_DOUT==1){ADValue|=(0x8000>>i);}
	}
	XPT2046_CS=1;
	if(Command&0x08)//0000 0100
	{
		return ADValue>>8;
	}else
	{
		return ADValue>>4;
	}
}
相关推荐
白山编程大哥11 小时前
接口幂等性是什么?如何设计?
笔记
ACP广源盛1392462567311 小时前
6 盘位存储扩展方案选型笔记:YLB3116 @ACP评估记录
笔记·硬件架构·硬件工程·国产芯片
小李不想当小白11 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米11 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
尼喃13 小时前
662K/65Z5三脚稳压芯片规格书—PW6566B33/B30引脚功能
嵌入式硬件
创界工坊工作室13 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
weixin_4481199413 小时前
Datawhale Jev Cookbook 202610 笔记3
笔记
姚瑞南13 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理
智购科技自动售货机厂家14 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
Gnevergiveup14 小时前
ATT&CK红蓝对抗实战指南-Windows安全基础
笔记·网络安全