ADS7822的使用
来源:互联网 发布:网络销售外包合同 编辑:程序博客网 时间:2024/06/06 17:38
今天第一次接触ADS7822芯片,遇到了个小问题,芯片焊好后可以读数,因为数据输出端口DOUT会按照时序输出一个无效的低电平以表示数据开始传输,但读出来的数据始终是0,折腾了半天,发现是DCLOCK第一次下降沿出现时间的问题
ADS7822的时序图
时序图相关的时间约束
仔细看DCLOCK的tcsd时间约束,表中要求tcsd应小于0,因为tcsd的最大值为0,所以,当CS置0之前,应先把DCLOCK置为0,才能正常工作,哎,涨教训了,以后要认真仔细啊。
附上代码:
/***头文件代码******/#ifndef __ADS7822E_H#define __ADS7822E_H#include "sys.h"#define ADS_DCLOCK PAout(2)#define ADS_DOUT PAin(1)#define ADS_CS PAout(0)#define ADS_DELAY (0)#define ADS_DELAY_US (5)extern void ADS_Init(void);extern unsigned int ADS_get_value(void);#endif
/***源程序代码*****/#include "ADS7822E.h"#include "delay.h"void ADS_Init(void){ RCC->APB2ENR|=1<<2; GPIOA->CRL&=0xFFFFF000; GPIOA->CRL|=0x00000383; GPIOA->ODR|=3;}unsigned int ADS_get_value(void){ unsigned int value=0; unsigned int i; ADS_DCLOCK=0;/*DCLOCK一定要在CS前置为0*/ ADS_CS=0; #if ADS_DELAY==1 delay_us(ADS_DELAY_US); #endif while(ADS_DOUT) { ADS_DCLOCK=1; ADS_DCLOCK=0; #if ADS_DELAY==1 delay_us(ADS_DELAY_US); #endif } for(i=12;i>0;i--) { ADS_DCLOCK=1; ADS_DCLOCK=0; #if ADS_DELAY==1 delay_us(ADS_DELAY_US); #endif value<<=1; value|=ADS_DOUT; } ADS_DCLOCK=1; ADS_CS=1; return value;}
另外说一句,这个编辑器怎么这么不好用啊
阅读全文
0 0
- ADS7822的使用
- ADC采样芯片ADS7822使用方法
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 使用RocketMQ的客户端使用
- golang interface深度解析
- 从Element学习Vue的使用
- Quartz作业调度框架入门学习
- 大菲波数
- java基础2:异常
- ADS7822的使用
- this逃逸
- 文件的存取
- 一致性哈希算法
- 种类并查集
- Scrapy-redis增量爬取以及Simhash相似文档的去重
- 【基础】队列的插入和删除--C++源代码(g++ 7.2.0)
- 轻松搭建 VPS ($2.5/月 支付宝)
- Nginx是什么能干什么,linux安装