STM32驱动12bit AD TLC2543(I/O模拟方式)
/******************************************************************************************
* 文件名称 :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模拟方式)相关推荐
- 合泰HT1632C点阵LED芯片 的emuSPI驱动(即软件GPIO模拟方式)
目录 变更历史 概述 芯片概述 设计理念 HT1632C的驱动 硬件抽象层HAL 硬件驱动层HDL 功能模块层FML 展望 变更历史 1.2021年12月27日,初版 2.2022年1月15日,增加一 ...
- STM32驱动W5500连接腾讯云
STM32驱动W5500连接腾讯云 1.W5500简介 W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案. W5500 集成了 TCP/IP ...
- K_A13_001 基于STM32驱动霍尔开关传感器 串口与OLED0.96双显示
K_A13_001 基于STM32驱动霍尔开关传感器 串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 对应程序: 四.部分代码说明 1.接线引脚定义 STM32 ...
- stm32 驱动 触摸屏
由于智能手机的发展和大屏幕的兴起,触摸屏已经得到了广泛的应用.触摸屏分为两种:电阻触屏 俗称"软屏":电容触屏俗称"硬屏". 电阻触摸屏的屏体部分是一块多层 ...
- I2C专题(二)—— STM32驱动AT24C02
前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. github:my github 注:博客所涉及的关于 stm32 的代码 ...
- 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522
目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...
- THWATCH-01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步
THWATCH-01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步 一级目录 二级目录 三级目录 一.cubemx配置 1.使用cubemx配置串口 2.配置IIC1 3.配置时钟 ...
- STM32进阶:使用STM32驱动ST7735S(内附核心源码)
使用STM32驱动ST7735S(内附核心源码) 感觉很久很久没有来博客更新了,历经千难万阻,终于做出来了TFT显示屏的SPI驱动,这里分享以下核心源码,接下来一段时间开始准备考科一了,后面有时间了再 ...
- 关于STM32驱动DS1302实时时钟的一点思考
关于STM32驱动DS1302实时时钟的一点思考 之前用51驱动过DS1302,没用多久就输出了正确的时间.当时以为这块芯片其实没啥,很简单.但是现在用STM32做项目,用到同样的芯片,以为这有何难, ...
最新文章
- Catalyst 4000 6000配置经验谈(一)
- 【学术相关】你只看到了200万年薪的招聘,看不到被困校园的几十万博士
- C++插入排序(附完整源码)
- 将CLASS文件打包成可运行的jar文件
- python lamda函数_python 用lambda函数替换for循环的方法
- 2019年房贷利率会下调吗?
- 前端“黑话”polyfill
- OEA 中 WPF 树型表格虚拟化设计方案
- Chrome使用、插件、脚本
- windows文件权限管理dos命令
- html导航栏的颜色怎么改变,bootstrap如何更改导航栏颜色
- Sphinx PHP api全文检索的例子
- 轻量级过程改进之项目计划
- 大数据对人们生活的积极影响_大数据对生活带来的影响
- 北科大小学期计算机实践报告,北京科技大学小学期C实践报告.pdf
- 推荐一款简单易用线上引流测试工具:GoReplay
- pytorch自学教程(一)
- Java Exer0905 玩家1、2互相攻击,直至一方生命值小于零,战斗结束,三局两胜,公布胜方。for循环、while循环、三元运算符、if-else、Scanner
- 基于Visual C 2010开发Windows7应用 多点触摸图片处理应用程序 1 同时处理多张图片
- 【已解决】Tomcat配置“X-Frame-Options头未设置”警告的过滤器(详细)
热门文章
- SSM框架项目实践,leetcode46
- vue使用阿里云视频点播
- 用计算机打根号怎么打,根号在电脑上怎么打出来啊?
- 小白重装系统教程_练习如何用u盘重装系统教程
- 史上最好的Markdown编辑器
- notability整理归档_ipad记手写笔记软件 Notability的使用方法图解教程
- 插入移动硬盘时出现Synaptics.exe - 损坏的映像错误的解决办法
- 工频风力发电储能逆变电路中的电流检测(霍尔电流传感器ACS712/CH701应用案例)
- web渗透--ftp暴力破解,明文、嗅探安全等
- Tk应用程序:密码输入框