pdf

stm32的ADS1110驱动程序(模拟I2C)

  • 1星
  • 日期: 2018-03-23
  • 大小: 77.66KB
  • 所需积分:1分
  • 下载次数:7
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: ADS1110

ADS1110

STM32

STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。

stm32的ADS1110驱动程序(模拟I2C),测试通过。

文档内容节选

F单片机ARM程序ADS1110c 以下是ADS1110h ifndef ADS1110H define ADS1110H 2013年1月8日 2119 include stm32f10xh include SysTickh 条件编译 1使用软件模拟I2C define TWIENABLE 1 define TWISCL0 define TWISCL1 define TWISDA0 define TWISDA1 define TWISDASTATE GPIOBBRRGPIOPin6 GPIOBBSRRGPIOPin6 GPIOBBRRGPIOPin7 GPIOBBSRRGPIOPin7 GPIOBIDRGPIOPin7 enum ENUMTWIREPLY TWINACK0 TWIACK1 enum ENUMTWIBUSSTATE TWIREADY0 TWIBUSBUSY1 TWIBUSERROR2 define TWIRETRYCOUNT 3 重试次数 void TWIInitializevoid TWISTARTvoid u8 void TWISTOPvoid TWIS......

F:\单片机\ARM\程序\ADS1110.c /************************************************************* *以下是ADS1110.h * *************************************************************/ #ifndef __ADS1110_H #define __ADS1110_H 2013年1月8日 21:19 #include "stm32f10x.h" #include "SysTick.h" //条件编译 1:使用软件模拟I2C #define TWI_ENABLE 1 #define TWI_SCL_0 #define TWI_SCL_1 #define TWI_SDA_0 #define TWI_SDA_1 #define TWI_SDA_STATE GPIOB->BRR=GPIO_Pin_6 GPIOB->BSRR=GPIO_Pin_6 GPIOB->BRR=GPIO_Pin_7 GPIOB->BSRR=GPIO_Pin_7 (GPIOB->IDR&GPIO_Pin_7) enum ENUM_TWI_REPLY { TWI_NACK=0 ,TWI_ACK=1 }; }; enum ENUM_TWI_BUS_STATE { TWI_READY=0 ,TWI_BUS_BUSY=1 ,TWI_BUS_ERROR=2 #define TWI_RETRY_COUNT 3 //重试次数 void TWI_Initialize(void); TWI_START(void); u8 void TWI_STOP(void); TWI_SendByte(u8 Data); u8 TWI_ReceiveByte(void); u8 TWI_WaitAck(void); u8 void TWI_SendACK(void); void TWI_SendNACK(void); void ads1110Config(void); RD_ADS(void); u16 get_ad_result(void); u16 #endif /* __ADS1110_H */ /************************************************************* *以下是ADS1110.c * *************************************************************/ #include "ADS1110.h" #define TWI_NOP TWI_Delay() -1- F:\单片机\ARM\程序\ADS1110.c u16 AD_Result[13]; 2013年1月8日 21:19 //----------------ADS1110(ED1)地址、配置字-----------------// #define // 1001 001 0 写 // 1001 001 1 读 #define #define // 连续转换模式,16bit精度,PGA=1 ADS1110_WR_ADDRESS ADS1110_RD_ADDRESS ADS1110_CONFIG_REG 0x92 0x93 0x8C /******************************************************************************* * 函数名称: TWI_Delay * 描 述: 延时函数 * 入: 无 * 输 出: 无 * 输 回: 无 * 返 者: * 作 * 修改日期: 2012年10月20日 *******************************************************************************/ void TWI_Delay(void) { u32 i=15; while(i--); } 述: /******************************************************************************* * 函数名称: TWI_Initialize * 描 I2C初始化函数 * * 输 入: 无 * 输 出: 无 * 返 回: 无 * 作 者: * 修改日期: 2012年10月20日 *******************************************************************************/ void TWI_Initialize(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; TWI_SDA_1; TWI_SCL_1; GPIO_Init(GPIOB, &GPIO_InitStructure); ads1110Config(); //////DebugPrint("Software TWI Initializing...\n"); // } /******************************************************************************* -2- F:\单片机\ARM\程序\ADS1110.c * 函数名称: TWI_START * 描 述: 发送启动 * 入: 无 * 输 出: 无 * 输 回: 无 * 返 * 作 者: * 修改日期: 2012年10月20日 *******************************************************************************/ u8 TWI_START(void) { 2013年1月8日 21:19 ////DebugPrint("TWI_START:BUSY\n"); return TWI_BUS_BUSY; ////DebugPrint("TWI_START:BUS ERROR\n"); return TWI_BUS_ERROR; TWI_SDA_1; TWI_NOP; TWI_SCL_1; TWI_NOP; if(!TWI_SDA_STATE) { } TWI_SDA_0; TWI_NOP; if(TWI_SDA_STATE) { } TWI_SCL_0; TWI_NOP; return TWI_READY; } 述: 发送停止位 /******************************************************************************* * 函数名称: TWI_STOP * 描 * 入: 无 * 输 出: 无 * 输 回: 无 * 返 * 作 者: * 修改日期: 2012年10月20日 *******************************************************************************/ void TWI_STOP(void) { TWI_SCL_0; TWI_NOP; TWI_SDA_0; TWI_NOP; -3- F:\单片机\ARM\程序\ADS1110.c TWI_SCL_1; TWI_NOP; TWI_SDA_1; TWI_NOP; // TWI_SCL_0; // TWI_NOP; //////DebugPrint("TWI_STOP\n"); } 2013年1月8日 21:19 述: /******************************************************************************* * 函数名称: TWI_SendACK * 描 收到数据,发送ACK * * 输 * 输 * 返 * 作 * 修改日期: 2012年10月20日 *******************************************************************************/ void TWI_SendACK(void) { 入: 无 出: 无 回: 无 者: 梅川酷子 TWI_SCL_0; TWI_NOP; TWI_SDA_0; TWI_NOP; TWI_SCL_1; TWI_NOP; TWI_SCL_0; TWI_NOP; //////DebugPrint("TWI_SendACK\n"); } 述: /******************************************************************************* * 函数名称: TWI_SendNACK * 描 收到数据,发送NACK * 入: 无 * 输 出: 无 * 输 回: 无 * 返 * 作 者: * 修改日期: 2012年10月20日 *******************************************************************************/ void TWI_SendNACK(void) { TWI_SCL_0; TWI_NOP; TWI_SCL_1; TWI_NOP; -4- 2013年1月8日 21:19 F:\单片机\ARM\程序\ADS1110.c TWI_SDA_1; TWI_NOP; TWI_SCL_0; TWI_NOP; //////DebugPrint("TWI_SendNACK\n"); } u8 TWI_WaitAck(void) { TWI_SCL_0; TWI_NOP; TWI_SDA_1; TWI_NOP; TWI_SCL_1; TWI_NOP; if(TWI_SDA_STATE) { TWI_SCL_0; return 0x00; } TWI_SCL_0; return 0x01; } 入: /******************************************************************************* * 函数名称: TWI_SendByte * 描 述: 发送一个字节 * * 输 要发送的数据(1字节) * 输 * 返 TWI_ACK/TWI_NACK * 作 者: * 修改日期: 2012年10月20日 *******************************************************************************/ u8 TWI_SendByte(u8 Data) { 出: 无 回: u8 i; TWI_SCL_0; for(i=0;i<8;i++) { TWI_SCL_0; TWI_NOP; //---------数据建立---------- if(Data&0x80) { TWI_SDA_1; } else { -5-
更多简介内容

推荐帖子

模拟电路之《电子设计从零开始》48M 杨欣 王玉凤 网盘下载
《电子设计从零开始》全书分为三大部分,共17章。第1章至第8章深入浅出地介绍了模拟电路的相关知识;第9章至第11章是数字电路部分,介绍了一些基本概念和系统开发过程中经常使用的器件;从第12章到结束是以51单片机为例的单片机应用技术介绍,其中有大量的实例和完整的程序。 电子设计涉及的知识面广、难度大,初学者往往不知从何入手。 《电子设计从零开始》结合了作者多年的学习与辅导经验,全面系统地介绍了进行
阿拉蕾ailin 模拟电子
TI 关于以太网的几个重要的注意事项
        TI以太网自问世以来,以太网取得了突飞猛进的发展,现已在商业和企业市场上得到了大量的应用。由于它具有定义明确的标准和易于部署的特性,以太网在工业世界中的广泛传播也是合乎常理的。然而,要在恶劣的工业环境中满足以太网的要求仍需要大量洞察和努力。   如图1所示,工业环境和商业环境完全不同,其自身会面临一系列挑战。工业环境往往包括许多恶劣的条件,如更高的温度范围和电压、更大的
Jacktang 无线连接
【ESP32-S2-Kaluga-1测评】奔跑的ESP32之四 苦B的测试
1、用新工具和新骗子,其实最不美好的部分就是要给它做测试,免费滴。搞通还好,不通就直接挂了。 这次的帖子极短,但是耗时极长,至少10天,反复测,代码,环境,工具... 还有那万恶的github竟然不给足够的网速和带宽,当然,这个也不一定怨得着它。 2、这次调试成功了, 不过也搞清楚了,上次的问题,在windows下,仍然没有set-target的选项,我估计linux的也没
北方 国产芯片交流
TI DSP的选型都有哪些?
TI公司现在主推四大系列DSP 1)C5000系列(定点、低功耗):C54X,C54XX,C55X 相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。处理速度在80MIPS--400MIPS之间。C54XX和C55XX 一般只具有McBSP同步串口、HPI并行接口、定时器、DMA等外设。值得注意的是C55XX提供了EMIF外部存储器扩展接口
fish001 DSP 与 ARM 处理器
示波器通道耦合与触发耦合的区别
在电子电路中,将前级电路(或信号源)的输出信号送至后级电路(或负载)称为耦合。耦合的作用就是把某一电路的能量输送(或转换)到其他的电路中去。   在示波器中,存在两种耦合设置,一种是通道的耦合方式,另外一种是触发的耦合方式,今天我们来详细说说这两种耦合设置的功能以及差别。   先来说示波器通道的耦合方式,一般打开示波器的通道菜单,就可以看到示波器有三种通道耦合方式的设置,分
Micsig麦科信 测试/测量
恒压BUCK电感的计算有些困惑
恒压BUCK电感的计算有些困惑,要求输入电压范围176-265Vac,输出9V/1A,效率91%,磁芯选用EE10,算出的结果96圈,145uH,实际测试发现输出正常,但二极管和电感的温度很高,而且效率只有60左右,加大磁芯效率和温度也没什么变化。根据输入输出要求,实际占空比只有0.036非常小,所以感觉计算的是错误的,还是说BUCK电路在输入高压时不能输出这么低的电压。还请各位高手不吝赐教,该如
cpfpost 开关电源学习小组

评论

登录/注册

意见反馈

求资源

回顶部

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })