/******************************************************************************************
* 文件名称 :tlc2543.c
* 版权     :
* 模块名称 :TLC2543驱动程序
* cpu      :  stm32f103rct6                           主频:72M
* 作者     :
* 创建日期 :2009-10-13
* 功能概要 :
*----------------------------------------修改历史------------------------------------------
* 当前版本 :       修改人:                  修改日期:
* 修改说明 :
******************************************************************************************/

#include "STM32Lib\\stm32f10x.h"
#include "hal.h"

#define TLC2543_SCK_H         GPIOB->BSRR = GPIO_Pin_15
#define TLC2543_SCK_L         GPIOB->BRR  = GPIO_Pin_15
  
#define TLC2543_SI_H         GPIOC->BSRR = GPIO_Pin_6
#define TLC2543_SI_L         GPIOC->BRR  = GPIO_Pin_6

#define TLC2543_CS_H         GPIOC->BSRR = GPIO_Pin_8
#define TLC2543_CS_L         GPIOC->BRR  = GPIO_Pin_8

#define TLC2543_SO_H         GPIOC->BSRR = GPIO_Pin_7
#define TLC2543_SO_L         GPIOC->BRR  = GPIO_Pin_7
#define TLC2543_SO_read        GPIOC->IDR  & GPIO_Pin_7
//#define TLC2543_SO_read1        GPIOC->ODR  & GPIO_Pin_7

/******************************************************************************************
* 函数名称    :TLC2543_GPIO_Config
* 功能描述    :
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2008-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void TLC2543_GPIO_Config(void)
{
   GPIO_InitTypeDef  GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6|GPIO_Pin_8;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
   GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 
   GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_15;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/******************************************************************************************
* 函数名称    :Delay_AD
* 功能描述    :
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2008-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Delay_AD(volatile u32 time)
{  
 u16 i;
   while(time--) 
   { 
     for(i=0;i<8;i++);
   }
}

/******************************************************************************************
* 函数名称    :GetChannelVal
* 功能描述    :
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2008-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
u16 GetChannelVal(u8 port)
{
 u8 i;
 u8 ucSend = port;
 u16   adval = 0;

if(port > 0x0F)  
   return 0;
 Delay_AD(600);
 TLC2543_SCK_L;
 Delay_AD(6);
 TLC2543_CS_L;
 Delay_AD(6);
 ucSend <<= 4;
 for(i=0; i<12; i++)
    
  {

if((TLC2543_SO_read)!=0)
   adval |= 1;   //table[i];
  else
      adval |= 0;
  
  if((ucSend&0x80)!=0)
  TLC2543_SI_H;
  else
  TLC2543_SI_L;
        Delay_AD(6);
  TLC2543_SCK_H;
  Delay_AD(6);  
  TLC2543_SCK_L;

ucSend<<=1;
  adval<<=1;
  }

Delay_AD(6);
 TLC2543_CS_H;
 adval>>=1;
 return(adval);
}

/******************************************************************************************
* 函数名称    :Read2543
* 功能描述    :
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2009-8-30
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
extern u16  AlogVal[11];
void  Read2543(void)
{
 u16 i;
 for(i=0;i<12;i++)
 {  
    AlogVal[i] = GetChannelVal(i);
    SysTickDelay(50);
 }
}
/******************************************************************************************
* 函数名称    :Calc_Ad_Value
* 功能描述    :ad采集的数据计算
* 参数        :  参数名称: 输入/输出? 类型  描述
*   ch---ad通道 n---分压倍数
* 返回值      :
* 作者        :
* 创建日期    :2009-7-20
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :v2     修改人:zds                  修改日期:
* 修改说明    :
******************************************************************************************/
u16  Calc_Ad_Value(u8 ch,u8 n) 
{
 u16  ad;
 u8 buf[4];
 float  VDC;
 u16 i;

buf[3] = (u8)(AlogVal[ch] % 10) + 0x30;
 AlogVal[ch] = AlogVal[ch] / 10;
 
    buf[2] = (u8)(AlogVal[ch] % 10) + 0x30;
 AlogVal[ch] = AlogVal[ch] / 10;

buf[1] = (u8)(AlogVal[ch] % 10) + 0x30;
 AlogVal[ch] = AlogVal[ch] / 10;

buf[0] = (u8)(AlogVal[ch] % 10) + 0x30;
 AlogVal[ch] = AlogVal[ch] / 10;
        
 ad = atoi(buf);
 VDC = n*5*ad/4096.0;
 i = VDC*100;
 return i;
}

STM32驱动12bit AD TLC2543(I/O模拟方式)相关推荐

  1. 合泰HT1632C点阵LED芯片 的emuSPI驱动(即软件GPIO模拟方式)

    目录 变更历史 概述 芯片概述 设计理念 HT1632C的驱动 硬件抽象层HAL 硬件驱动层HDL 功能模块层FML 展望 变更历史 1.2021年12月27日,初版 2.2022年1月15日,增加一 ...

  2. STM32驱动W5500连接腾讯云

    STM32驱动W5500连接腾讯云 1.W5500简介    W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案. W5500 集成了 TCP/IP ...

  3. K_A13_001 基于STM32驱动霍尔开关传感器 串口与OLED0.96双显示

    K_A13_001 基于STM32驱动霍尔开关传感器 串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 对应程序: 四.部分代码说明 1.接线引脚定义 STM32 ...

  4. stm32 驱动 触摸屏

    由于智能手机的发展和大屏幕的兴起,触摸屏已经得到了广泛的应用.触摸屏分为两种:电阻触屏   俗称"软屏":电容触屏俗称"硬屏". 电阻触摸屏的屏体部分是一块多层 ...

  5. I2C专题(二)—— STM32驱动AT24C02

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. github:my github 注:博客所涉及的关于 stm32 的代码 ...

  6. 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

    目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...

  7. THWATCH-01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步

    THWATCH-01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步 一级目录 二级目录 三级目录 一.cubemx配置 1.使用cubemx配置串口 2.配置IIC1 3.配置时钟 ...

  8. STM32进阶:使用STM32驱动ST7735S(内附核心源码)

    使用STM32驱动ST7735S(内附核心源码) 感觉很久很久没有来博客更新了,历经千难万阻,终于做出来了TFT显示屏的SPI驱动,这里分享以下核心源码,接下来一段时间开始准备考科一了,后面有时间了再 ...

  9. 关于STM32驱动DS1302实时时钟的一点思考

    关于STM32驱动DS1302实时时钟的一点思考 之前用51驱动过DS1302,没用多久就输出了正确的时间.当时以为这块芯片其实没啥,很简单.但是现在用STM32做项目,用到同样的芯片,以为这有何难, ...

最新文章

  1. Catalyst 4000 6000配置经验谈(一)
  2. 【学术相关】你只看到了200万年薪的招聘,看不到被困校园的几十万博士
  3. C++插入排序(附完整源码)
  4. 将CLASS文件打包成可运行的jar文件
  5. python lamda函数_python 用lambda函数替换for循环的方法
  6. 2019年房贷利率会下调吗?
  7. 前端“黑话”polyfill
  8. OEA 中 WPF 树型表格虚拟化设计方案
  9. Chrome使用、插件、脚本
  10. windows文件权限管理dos命令
  11. html导航栏的颜色怎么改变,bootstrap如何更改导航栏颜色
  12. Sphinx PHP api全文检索的例子
  13. 轻量级过程改进之项目计划
  14. 大数据对人们生活的积极影响_大数据对生活带来的影响
  15. 北科大小学期计算机实践报告,北京科技大学小学期C实践报告.pdf
  16. 推荐一款简单易用线上引流测试工具:GoReplay
  17. pytorch自学教程(一)
  18. Java Exer0905 玩家1、2互相攻击,直至一方生命值小于零,战斗结束,三局两胜,公布胜方。for循环、while循环、三元运算符、if-else、Scanner
  19. 基于Visual C 2010开发Windows7应用 多点触摸图片处理应用程序 1 同时处理多张图片
  20. 【已解决】Tomcat配置“X-Frame-Options头未设置”警告的过滤器(详细)

热门文章

  1. SSM框架项目实践,leetcode46
  2. vue使用阿里云视频点播
  3. 用计算机打根号怎么打,根号在电脑上怎么打出来啊?
  4. 小白重装系统教程_练习如何用u盘重装系统教程
  5. 史上最好的Markdown编辑器
  6. notability整理归档_ipad记手写笔记软件 Notability的使用方法图解教程
  7. 插入移动硬盘时出现Synaptics.exe - 损坏的映像错误的解决办法
  8. 工频风力发电储能逆变电路中的电流检测(霍尔电流传感器ACS712/CH701应用案例)
  9. web渗透--ftp暴力破解,明文、嗅探安全等
  10. Tk应用程序:密码输入框