其实接触CSDN好久了,一直没有想写自己的博客,遇到问题的时候才去上CSDN参考别人的资料,想到以后不能脚踩西瓜皮,滑倒哪里是哪里,要一个萝卜一个坑,用CSDN博客记录下自己的每一个脚印,一来自己以后可以回过来温故知新,二来很高兴为后来人做一个可参考的基石。毕设了,打算用MDK去开发TQ2440,题目是单片机的液压控制系统,其中,会用到TLC2543芯片的AD转换器,TLC2543是12位精度的SPI接口的AD芯片,起初用网上便宜的8位AD芯片PCF8591,好不容易用TQ2440自带的IIC总线调通了AD的读取,老师说精度太低,换!这不,我就选取了TLC2543芯片,原以为调试SPI和IIC一样简单,谁知道,真正调试的时候,遇到各种问题,首先采用的是SPI查询方式,读取的数据一直不确定,检查电路无误之后,上网查遍了S3C2440读取TLC2543的资料,发现资料太少了,唯一可参考的是一位西安交大毕设论文,描述的是linux下的S3C2440的TLC2543读取的驱动的编写。发现了一些错误,但是论文写的遮遮掩掩,并不完全透明。无奈之下,我放弃了SPI接口的编写,网上更多的GPIO模拟的驱动,我搜索了一下,S3C2440的SPI模拟的程序还真没有人写过,我就在此记录一下了。

#include "2440addr.h"
#include "AD.h"#define CLK(value) (rGPGDAT = (rGPGDAT & ~(1<<11)) | (value<<11)) //CLK
#define DOUT(value) (rGPGDAT = (rGPGDAT & ~(1<<7)) | (value<<7)) //MOSI
#define AD_CS(value) (rGPGDAT = (rGPGDAT & ~(1<<10)) | (value<<10)) //AD_CS/************AD的初始化程序**************************             GPG11-----CLK        GPG7----MOSI  GPG10-----AD_CS       GPG1-----MISOGPG3----ECO
******************************************************/
void AD_Init(void)
{rGPGCON&=(~((3<<2)|(3<<14)|(3<<20)|(3<<22)|(3<<6)));    rGPGCON|=(0<<2)|(1<<14)|(1<<20)|(1<<22)|(0<<6);  //GPG7,10,11设置成输出,GPG1设置成输入 rGPGUP&=(~((1<<1)|(1<<7)|(1<<10)|(1<<11)|(1<<3)));   //只使能GPG1,7,10,11的上拉,做基本IO口
}void delay_AD(unsigned int N)
{
while(N--);
} unsigned short Read_AD(unsigned char ADchannel)
{unsigned int i;unsigned short ADC=0;  ADchannel<<=4;  //XXXX 0000,按照格式要求 ,12bits,MSB先入while(!(rGPGDAT&0x0008)); //GPG3----ECO如果是低电平,继续,这里一定要加上,不然可能会出现极大的跳变的现象CLK(0);  AD_CS(0);               for(i=0;i<12;i++){    if(rGPGDAT&0x0002)  ADC|=0x0001;//判断接收GPG1的是否为1 if(ADchannel&0x80) DOUT(1); //向AD发送数据else DOUT(0);CLK(1);  delay_AD(30);               CLK(0); delay_AD(30);ADchannel<<=1;ADC<<=1; }AD_CS(1);ADC>>=1;return ADC;  //12位精度
}

1.上面的程序是参考51的一个例程仿写的,但是51上没有EOC的反馈的连接,我刚开始也没有接,但是读取的数据一直在0和读取数据之间跳变,而且有时候读取的数据还挺奇怪一直怀疑是时序的同步问题,所以我后来加上了EOC的连接,顺利解决的此事,读取数据还算比较稳定。

TQ2440 GPIO模拟SPI读取AD转换器TLC2543芯片相关推荐

  1. 用GPIO模拟SPI接口读取传感器数据

    本文基于平头哥开发板RVB2601,简要介绍了用GPIO模拟SPI时序逻辑,实现SPI协议,按照特定温度传感器的时序,读取其数据,及示例程序 一.概述 SPI(Serial Peripheral In ...

  2. GPIO模拟SPI通讯接口

    一.SPI总述 SPI 是一种允许一个主设备启动一个与从设备的同步通讯的协议,从而完成数据的交换.也就是说,SPI是一种规定好的通讯方式.这种通信方式的优点是占用端口较少,一般4根就够基本通讯了.同时 ...

  3. 【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

    [全志T113-S3_100ask]15-2 linux系统gpio模拟spi驱动屏幕--ILI9341 背景 (一)查阅参考文档 (二)使能内核模块 (三)修改设备树 (四)测试 (五)后语 背景 ...

  4. 外设驱动库开发笔记43:GPIO模拟SPI驱动

      SPI总线是我们常用的串行设备接口,一般情况下我们都会适应硬件SPI接口,但有些时候当硬件端口不足时,我们也希望可以使用软件来模拟SPI硬件接口,特别是要求不是很高的时候.在这一篇中我们将来讨论如 ...

  5. SPI总线协议、SPI时序图详解、GPIO模拟SPI

    SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚 ...

  6. 12位串行AD转换器TLC2543与单片机的接口设计与编程

    第一次做光学仪器的小项目中的一部分是数据采集后经过模数转换,把采集到的电压用数字量输入到单片机中进行处理.此处总结下TLC2543的相关资料和与单片机接口方面的编程.主要的参考资料是TLC2543的d ...

  7. stm32使用gpio模拟spi

    本文介绍如何使用STM32标准外设库的GPIO端口模拟SPI,本例程使用PA5.PA6和PA7模拟一路SPI.SPI有4种工作模式,模拟SPI使用模式0,即空闲时SCK为低电平,在奇数边沿采样. 本文 ...

  8. 在ARM Linux下使用GPIO模拟SPI时序详解

    Author:杨正  Data:2016.1.1  Mail:yz2012ww@gmail.com 一.       概述 SPI是英文SerialPeripheral Interface的缩写,顾名 ...

  9. c语言编程TLC2543AD采集,AD转换器TLC2543编程

    一.特性 (1)12位分辨率A/D转换器: (2)在工作温度范围内10μs转换时间: (3)11个模拟输入通道: (4)3路内置自测试方式: (5)采样率为66kbps: (6)线性误差+1LSB(m ...

最新文章

  1. websocket 群/单聊 基础
  2. android 在debug的时候不会出现闪退问题 在debug时无法重现bug 的可能原因
  3. 阿里云 apt-get update 403
  4. python中的序列总结:列表,元组,字符串
  5. BZOJ2815: [ZJOI2012]灾难
  6. GDCM:gdcm代码中引发bad_alloc异常测试程序
  7. html 页面工具,html页面工具-htmlUnit
  8. php swoole process,PHP swoole的process模块创建和使用子进程操作示例
  9. python的for语句要用冒号吗_python中循环的写法 for
  10. SQL Serever学习4
  11. vmlinux_32.lds.S
  12. 如果有一天,程序员不想做程序了,首选要做什么呢?
  13. SCVMM 2012 R2---添加Hyper-V虚拟机
  14. 戴尔计算机软件的安装,戴尔笔记本电脑安装软件没反应怎么办
  15. 自适应直方图均衡化matlab 程序,直方图均衡化程序 matlab
  16. OSChina 周四乱弹 ——丑到端水水更流,举杯浇丑丑更丑
  17. 【爬虫实战】国家企业公示网-项目分析
  18. 大数据、物联网、云计算
  19. 亚马逊测评自养号,小白应该如何开始?
  20. [IOS APP]小豆子幽默丛书

热门文章

  1. Pycharm超好用插件合集
  2. 谷歌邮箱账号不会注册?注册失败?这份完美注册教程请收好
  3. 新手制作ppt模板图表如何自定义配色?
  4. 为什么说社交电商崩塌倒计时?
  5. google官方mvp+dagger2架构详解
  6. 美国计算机科学研究生学费,在美国读研究生一年学费多少,如果是计算机专业的要上几年?...
  7. 什麼是 The Candle Problem
  8. ANTLR4学习总结
  9. 2008年个人知识管理软件测评[草]
  10. 如何在服务器管理器删除服务器,Windows 系统如何在服务器管理器删除服务器