ADT7420

合集下载

四输入与非门7420工作原理

四输入与非门7420工作原理

四输入与非门7420工作原理
四输入与非门(7420)是一种集成电路,通常用于数字电子系统中。

每个输入都是一个非门,也就是一个反相器。

这意味着,如果输入是1,输出就是0,反之亦然。

7420 IC 的工作原理如下:
1. 输入阶段:这个器件有四个输入引脚(A、B、C、D)。

每个输入都连接到一个非门。

2. 非门:每个输入都通过一个非门,进行逻辑非操作。

这意味着,如果输入是高电平(1),那么非门输出低电平(0),反之亦然。

3. 与非门:接下来,这四个非门的输出连接到一个与非门。

与非门是一个与门后跟一个非门,其输出是与门输出的逻辑非。

4. 与门:四个非门的输出在与门中进行逻辑与运算。

只有当所有输入都是高电平时,与门的输出才是高电平。

否则,输出为低电平。

5. 最终输出:与非门将与门的输出进行逻辑非操作,最终输出的结果是:只要有一个输入为低电平,那么输出就为高电平。

这种设计使得四输入与非门的输出在只有当所有输入都是高电平时才为低电平,其他情况都为高电平。

这种门电路在数字逻辑电路中有许多应用,用于实现复杂的逻辑功能。

基于ADT7420的新型数字温度记录仪

基于ADT7420的新型数字温度记录仪

2 A T 4 0简 介 D 72
A T 4 0是一 种新 型 的具 有 自校准 、6位分 辨率 、 D 72 1 高
线性 度 的数位 温 度传感 器 , 在较宽 的工作 温度 范 围下 , 具 备高 精 密度 、 漂 移 特性 。该新 型 数 字 温 度芯 片 的 测量 低 范 围可 以达到( 4 一 0~+1o。 , 5) 分辨 率可 以达 到 0o7o。 C . 3C a
感 器 。利 用数字 温度 传感 器 能 够 直 接得 到 温 度 , 不存 在 引线 电阻 引起 的误差 , 不必 使用 调理 电路进 行 修正 , 大 大
单 片机连 接 。这 种总线 上 的每个 芯片 都有 唯一 的地址 识 别, 因此 可 以组成 多点 测量 系统 。
VCC
简化 电路 复 杂 程 度 。并 且 使 用 留有 R 22串行 通 讯 接 S3 口, 方便通 过上 位计 算 机读 取 温 度 曲线 。整 个 系 统 结 构 简单 , 确度 高 , 准 具有 较高 的可靠 性 。
吕 中平
( 疆 计 量 测试 研 究 院 , 疆 乌 鲁 木 齐 80 1) 新 新 30 1
摘 要 : U140数宁温度 片 , A "2 / 具有准确度高 , 测温范 围宽 , 应有简单的特点。其在一 定温度范 围具有替代铂 电阻温 度传感 器的优势 。使用这种 新型
的 精度数字芯片 设计的温度记录仪 有体积小 , 测温准f 的特点。 『 0
实, 读懂 弄 明 白后 正 常使用 合格 有效 的计量 器具 。
3 2 对 校准 证 书 的技术确 认 .
开 展测量 设备检 定 和校准 以及 出具证 书 是法 定技 术
机构 的一项 日常 主要 工作 , 为 计 量 管 理 人 员 和 技术 人 作 员 , 检定 和校准 的异 同和工作 要 求应该 多加关 注 , 证 对 保 检定 和校准 的 内容结果 准确 可靠 、 有效使 用 。

rm中文简介

rm中文简介

概观所述PmodTMP2是温度传感器和围绕建成恒温控制板ADI公司ADT7420。

其特点包括:•高达16-bit分辨率•典型精度优于0.25°C•有4种可选I2C接口地址•240毫秒连续转换时间•支持3.3V和5V接口•无需校准•可编程过温/欠温控制引脚。

功能说明该PmodTMP2使用8针连接器允许通过I2C通信,并提供了引脚以菊花链的PmodTMP2其他I2C设备。

该PmodTMP2还提供了两个2-排针用于选择的I2C地址芯片和两个2针接头,用于控制基于温度的外部设备通过在软件的用户定义的阈值。

I2C接口该PmodTMP2的板载芯片ADT7420行为由于采用了业界标准的从设备I2C通信方案。

沟通与PmodTMP2设备的I2C 主机设备必须指定一个从地址(0x48-0x4B)和一个标志,表示该通信是读(1)或写(0)。

此后面是实际的数据传输。

为了ADT7420,数据传送应当包括所需的设备寄存器的地址接着要写入的数据指定寄存器。

从寄存器读取的主机必须写入所需的寄存器地址到ADT7420,然后发送一个I2C启动条件,并发送一个新的读请求ADT7420。

如果主人不产生启动条件试图读之前,然后将值写入到地址寄存器将被复位到00H。

正如一些寄存器存储16位值作为8位注册对,ADT7420将自动递增的设备的地址寄存器访问特定的寄存器,如当温度寄存器和阈值寄存器。

这允许主机使用单个的读或写的请求同时访问低字节和高字节,这些寄存器。

一个寄存器和他们的行为的完整列表可以在ADT7420数据手册中找到可在ADI公司网站。

正如一些寄存器存储16位值作为8位注册对,ADT7420将自动递增的设备的地址寄存器访问特定的寄存器,如当温度寄存器和阈值寄存器。

这允许主机使用单个的或写的请求同时访问低字节和高字节,这些寄存器。

一个寄存器和他们的行为的完整列表可以在ADT7420数据手册中找到可在ADI公司网站。

I2C接口标准使用两个信号线。

U盘电路的PCB板设计

U盘电路的PCB板设计

修改PCB图纸参数
2. 修改元件安全间距
由于电路板面积太小,元件的安全间距 可以设置得更小一些,从而使元件可以 排列得更紧密一些,如可以将其修改到 步距5mil以下,。
执行菜单命令【Design】/【Rules…】, 弹出PCB板规则对话框,双击 【Placement】选项,再双击 【Component Clearance】选项后,选中 【Component Clearance】选项,如图所 示,在右边的规则栏中将【Gap】栏修 改为3mil。
导线规则设置
3. 设置过孔尺寸
4.设置SMT焊盘拐角距离
11.6.2 多层板自动布线
执行菜单命令【Auto Route】/【All】菜单命令,将弹出如图所示 的自动布线策略选择对话框对话框,选用【Via Miser】选项,表 示将采用具有建议性最小过孔限制的多层板布线策略进行布线, 点击【Route All】 按钮,PCB板编辑器开始自动布线
全局修改电阻的封装
(1)将光标移到U盘原理图中的
任意一个电阻上,单击鼠标右键,
在弹出的对话框中选菜

,弹出如图所
示的查找相似对象对话框,在
【Resistor】项后选择【Same】,
表示将选中图纸中所有的电阻。
查 找 所 有 电

修改电阻封装
可以看到图纸中所 有电阻均处于选中 状态,此时点击工 作区右下方的 【Inspect】按钮, 弹出如图所示的 Inspect面板,将 【Current Footprint】 栏修改为“C1005 -0402”,按回车键 确认输入。
11.4.1 确定布局方案
在高密度电路板中,是否需要双面放置元件是 设计者首先要考虑的问题。一般情况下,如果 在顶层能够完成元件的布局,尽量不要将元件 放置在底层,因为一方面会提高电路板的设计 难度和成本,另一方面也会增加元件装配的工 序和难度。但对于U盘电路板而言,如果直接 将元件放置在顶层,由于电路板太小,部分元 件连放置的位置都没有,所以必须采取双面放 置元件的办法。仔细分析原理图可以知道,U 盘主要由以U2(IC1114)为核心的控制器电路 和以U3(K9F0BDUDB)组成。所以可以考虑 将二部分电路分别放置在顶层和底层,具体将 U3(K9F0BDUDB)为核心的存储器电路放置 在顶层元件面,而将U2(IC1114)为核心的控 制器电路放置在底层的焊接面。

LMG7420PLFC-X中文资料

LMG7420PLFC-X中文资料

LMG7420PLFC-X240*128 Dots FEATURES♦Black on White Film STN TYPE ♦Transmissive Mode♦High Brightness CFL Backlight ♦High Contrast LC Material♦Built-in LCD Controller T6963CMECHANICAL DATAItem Value Unit Module Dimensions159.4*101*11mm Viewing Area123*68mm Resolution240*128dots Dot Size0.47*0.47mm Dot Pitch0.5*0.5mm Weight180g OPTICAL DATAItem Symbol Condition Min Typ Max Unit Contrast Ratio KØ=10°,θ=0°,Note 1-18--Brightness-T=25°C,IL=5mA,Note 860.080.0-cd/m2ViewingDirection-6o’clockViewing AngleØ2 - Ø1K=2,Note 13040-degreeResponse Time (Rise)t RØ=10°,θ=0°,Note 1-160210msResponse Time (Fall)t FØ=10°,θ=0°,Note 1-110160msABSOLUTE MAXIMUM RATINGSItem Symbol Condition Min Max Unit Supply Voltage(Logic)V DD - V SS-0 6.5VSupply Voltage(LC Drive)V DD - V EE-020.5V Input Voltage V I--0.30.3+VDD V OperatingTemperatureT OP Note 5,6050°CStorageTemperatureT ST Note 7-2060°C DATA INTERFACE PIN ASSIGNMENTPin No Symbol Level FunctionA1VSS (0V)-GroundA2VDD (+5V)-Power supply for logic circuitA3V0-Power supply for LCD driveA4C/D-Not WR=Low and C/D=High forCommand Write, C/D= Low for DataWrite, Not RD = Low and C/D=Highfor Status Read, C/D = Low for DataReadA5Not WR-DW=Low for Data WriteA6Not RD-RD=Low for Data readA7-A14DB0 - DB7-Display dataA15Not CE-Chip enable (Not CE must be Low) A16Not RET-ResetA17VEE (-15V)-Power supply for LCD driveA18Not DISP OFF-NC for Display ON, GND forDisplayOFFA19F/S-Character font selection (F/S=Highfor 6x8 font, F/S=Low for 8x8 font) A20Reverse-Display mode reverseCFL INTERFACE PIN ASSIGNMENTPin No Symbol Level Function1GND-CFL Ground2NC-No connection3NC-No connection4HV-Power supply for CFL ELECTRICAL CHARACTERISTICSItem Symbol Condition Min Typ Max Unit Supply Voltage(Logic)V DD - V SS- 4.75 5.0 5.25VSupply Voltage(LC Drive)V EE - V SS--14.5-15.0-15.5V Supply Current I DD Note 2-11.714.0mAI EE Note 2- 2.5 4.0mA Input Voltage(High Level)V IH High Level0.8*VDD-VDD VInput Voltage(Low Level)V IL Low Level0-0.2*VDDVFrameFrequencyf FLM Note 4-75-Hz Duty Ratio-1/128-RecommendedLC DriveVoltageV DD -V O Duty=1/128T=0°C,Ø=10°,Note 3-16.9-VDuty=1/128T=25°C,Ø=10°,Note 3-15.8-VDuty=1/128T=50°C,Ø=10°,Note 3-15.2-VBacklight LampVoltageV BL T=25°C-360-VrmsBacklight LampFrequencyf BL T=25 °C307085kHzBacklight LampCurrentI BL T=25 °C 2.5 5.0 5.5mArmsLamp StartVoltageV S T=25°C,Note 9(1000)--V TIMING CHARACTERISTICSItem Symbol Min Typ Max Unit C/D set up time tCDS100--nsC/D hold time tCHD10--ns Not CE, Not RD, Not WRpulse widthNot tCE, NottRD, Not tWR80--ns Data set up time tDS80--ns Data hold time tDH40--ns Access time tACC--150ns Output hold time tOH10-50ns INVERTER AND CONNECTORSRecommended Inverter Starter KitHITACHI INVC191START74xxLamp Connector Lamp Housing Connector MITSUMI M63M83-04M61M73-04, M60-04-30-114P orM60-04-30-134PNote1:Definition of optical data, see page 84Note 2:fFRAME=75Hz, VDD-V0=15.8V, Ta=25°CNote 3:Recommended LCD driving may fluctuate about +- 1.0V by each module. Note 4:Need to make sure of flickering and rippling of display when setting the FRAME Frequency in your set.Note 5:Background colour of the LCD changes depending on temperature.Between 40-50°C optical characteristics of the LCD like contast andviewing angle change but the display remains readable.Note 6:Higher starting voltage of CFL and higher LCD driving voltage are needed while operating at 0°C. The lifetime of CFL will be reduced at 0°CNote 7:Storage at -20°C < 48 hr, Ta at 60°C < 168 hrNote 8:Measurement after 10 minutes of CFL operating. Brightness control:100% Note 9:Starting discharge voltage is increased when LCM is operating at lower temperature. Please check the characteristics of inverter before applying.。

华仪器7440中文说明书

华仪器7440中文说明书
第六章 校正 ....................................................................................................... 62
6.1 進入校正模式 ...................................................................................................... 62 6.2 密碼設定.................................................................................................................. 62 6.3 記憶程式鎖定選擇 .................................................................................................. 62 6.4 校正步驟.................................................................................................................. 63
本保證不含本機器的附屬設備等非華儀電子所生產的附件。 在兩年的保固期內,請將故障機組送回本公司維修組或本公司指定的經銷商處,本公司會 予以妥善修護。 如果本機組在非正常的使用下、或人為疏忽、或非人力可控制下發生故障,例如地震、水 災、暴動、或火災等非本公司可控制的因素,本公司不予免費保修服務
3
目錄
導電(Conductive): 在每立方公分的體積內,其電阻值不超過 1000 歐姆,或每帄方公分的 表面積內,其電阻值不超過 100000 歐姆。

成都华微可替代国外产品目录表2010+V2版

成都华微可替代国外产品目录表2010+V2版

单片轴角转 换器
33
HWD2S83
34
双通道轴角 转换器
HWD2S44
1、电源电压:2.5~5.5V 2、建立时间:10us 3、分辨率:12位 4、积分非线性:± 1LSB 5、微分非线性:± 4LSB 工业级 6、偏移误差:± 9mV 7、增益误差:± 0.7FSR% 8、输出电阻:0.15Ω 9、接口:串口输入 10、封装:SSOP16 1、电源电压:± 12V 2、最大跟踪转速:1040rps 3、分辨率:10、12、14、16位 B 4、精度:± 4+1LSB 5、输入电压范围:1.8-2.2Vrms 6、输入频率:50-20000Hz 7、封装形式:CDIP40 1、电源电压:± 12V 2、最大跟踪转速:1040rps 3、分辨率:10、12、14、16位 B 4、精度:± 8+1LSB 5、输入电压范围:1.8-2.2Vrms 6、输入频率:0-20000Hz 7、封装形式:CLCC44 1、电源电压:± 15V 2、最大跟踪转速:1040rps 3、分辨率:14位 B 4、精度:8' 5、输入电压范围:2,11.8,26,90Vrms 6、输入频率:400-2600Hz 7、封装形式:CDIP32
1
HWD1472
B1

1月
XC9572
Xilinx
2
复杂可编程 逻辑器件 (CPLD)
HWD14144
B

2月(持续订 货后基本保证 现货)
1月
XC95144
Xilinx
3
HWD14288
B

2月(持续订 货后基本保证 现货) 2月(持续订 货后基本保证 现货) 2月(持续订 货后基本保证 现货)

昂宝与茂捷半导体产品替换表

昂宝与茂捷半导体产品替换表

的T5、T8灯管等中大 元器件少
功率LED电源
④可进模拟与PWM调

24W-32W,30W-42W,36W-48W,45W-56W
◆LED驱动 隔离驱动+PFC+内置MOS
芯片简要说明
产品方案特点
应用行业
常用案例
PSR+PFC,内置MOS
高PFC值,PSR系列,省光耦和431,节省 成本空间,安全性高。
GR8830,OB2269(管脚不容),SD4872(脚 位不兼容),SP5875(管脚不容),
SP5876(管脚不容),LD7575(管脚不 容),LD7576(管脚不容)
SSR+外置MOS管,各种保护功能
SSR电压电流精度高, M5576最大待机功 耗〔100mW〕 高效率:〔24V5A平均效率
待机功耗<100mW,抖频功能,65KHz,高性 能PWM控制器,欠压保护
1:高要求的手机充 电器
2: 适配器(笔记本适 配器、MID充电器、
显示器电源 3: LCD TV电源。
① 开关频率可调 ② 待机空耗低 ③ 比OB2273 /2263
性价比更高 ④ 容易过EMI ⑤相同变压器的情况 下可以做更大功率
PSR内置MOS有线补功能,各种 保护功能
PSR成本低,节省PCB板上空间,省掉光 耦和431,节省成本
① 输出电压精度
手机,移动电源, 高,OCP保护一致性
MID充电器,理发 好

剪,按摩器,适配器
待机空耗低

③ 比OB2538性价比
更高
OB2536,CR6236,RM3262 SP5618,SF5926,ME8302 HT2356,PN8326,LY2926
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/***************************************************************************//** * @file ADT7420.h* @brief Header file of ADT7420 Driver.* @author DBogdan (dragos.bogdan@)******************************************************************************* ** Copyright 2012(c) Analog Devices, Inc.** All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions are met:* - Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.* - Redistributions in binary form must reproduce the above copyright* notice, this list of conditions and the following disclaimer in* the documentation and/or other materials provided with the* distribution.* - Neither the name of Analog Devices, Inc. nor the names of its* contributors may be used to endorse or promote products derived* from this software without specific prior written permission.* - The use of this software may or may not infringe the patent rights* of one or more patent holders. This license does not release you* from the requirement that you obtain separate licenses from these* patent holders to use this software.* - Use of the software either in source or binary form, must be run* on or directly connected to an Analog Devices Inc. component.** THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.* IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** ** SVN Revision: 697******************************************************************************* /#ifndef _ADT7420_H_#define _ADT7420_H_/****************************************************************************** //***************************** Include Files **********************************//****************************************************************************** /#include "Communication.h"/****************************************************************************** //************************** ADT7420 Definitions *******************************/ /****************************************************************************** //*! ADT7420 address */#define ADT7420_A0_PIN 1 /*!< I2C Serial Bus Address Selection Pin */#define ADT7420_A1_PIN 1 /*!< I2C Serial Bus Address Selection Pin */#define ADT7420_ADDRESS (0x48 + (ADT7420_A1_PIN << 1) + ADT7420_A0_PIN)/*! ADT7420 registers */#define ADT7420_REG_TEMP_MSB 0x00 /*!< Temperature value MSB */#define ADT7420_REG_TEMP_LSB 0x01 /*!< Temperature value LSB */#define ADT7420_REG_STATUS 0x02 /*!< Status */#define ADT7420_REG_CONFIG 0x03 /*!< Configuration */#define ADT7420_REG_T_HIGH_MSB 0x04 /*!< Temperature HIGH setpoint MSB */#define ADT7420_REG_T_HIGH_LSB 0x05 /*!< Temperature HIGH setpoint LSB */#define ADT7420_REG_T_LOW_MSB 0x06 /*!< Temperature LOW setpoint MSB */#define ADT7420_REG_T_LOW_LSB 0x07 /*!< Temperature LOW setpoint LSB */#define ADT7420_REG_T_CRIT_MSB 0x08 /*!< Temperature CRIT setpoint MSB */#define ADT7420_REG_T_CRIT_LSB 0x09 /*!< Temperature CRIT setpoint LSB */#define ADT7420_REG_HIST 0x0A /*!< Temperature HYST setpoint */#define ADT7420_REG_ID 0x0B /*!< ID */#define ADT7420_REG_RESET 0x2F /*!< Software reset *//*! ADT7420_REG_STATUS definition */#define ADT7420_STATUS_T_LOW (1 << 4)#define ADT7420_STATUS_T_HIGH (1 << 5)#define ADT7420_STATUS_T_CRIT (1 << 6)#define ADT7420_STATUS_RDY (1 << 7)/*! ADT7420_REG_CONFIG definition */#define ADT7420_CONFIG_FAULT_QUEUE(x) (x & 0x3)#define ADT7420_CONFIG_CT_POL (1 << 2)#define ADT7420_CONFIG_INT_POL (1 << 3)#define ADT7420_CONFIG_INT_CT_MODE (1 << 4)#define ADT7420_CONFIG_OP_MODE(x) ((x & 0x3) << 5)#define ADT7420_CONFIG_RESOLUTION (1 << 7)/*! ADT7420_CONFIG_FAULT_QUEUE(x) options */#define ADT7420_FAULT_QUEUE_1_FAULT 0#define ADT7420_FAULT_QUEUE_2_FAULTS 1#define ADT7420_FAULT_QUEUE_3_FAULTS 2#define ADT7420_FAULT_QUEUE_4_FAULTS 3/*! ADT7420_CONFIG_OP_MODE(x) options */#define ADT7420_OP_MODE_CONT_CONV 0#define ADT7420_OP_MODE_ONE_SHOT 1#define ADT7420_OP_MODE_1_SPS 2#define ADT7420_OP_MODE_SHUTDOWN 3/*! ADT7420 default ID */#define ADT7420_DEFAULT_ID 0xCB/****************************************************************************** //************************ Functions Declarations ******************************//****************************************************************************** //*! Reads the value of a register. */unsigned char ADT7420_GetRegisterValue(unsigned char registerAddress);/*! Sets the value of a register. */void ADT7420_SetRegisterValue(unsigned char registerAddress,unsigned char registerValue);/*! Initializes the comm. peripheral and checks if the device is present. */unsigned char ADT7420_Init(void);/*! Resets the ADT7420. */void ADT7420_Reset(void);/*! Sets the operational mode for ADT7420. */void ADT7420_SetOperationMode(unsigned char mode);/*! Sets the resolution for ADT7420. */void ADT7420_SetResolution(unsigned char resolution);/*! Reads the temperature data and converts it to Celsius degrees. */float ADT7420_GetTemperature(void);#endif // _ADT7420_H_/***************************************************************************//** * @file ADT7420.c* @brief Implementation of ADT7420 Driver.* @author DBogdan (dragos.bogdan@)******************************************************************************* ** Copyright 2012(c) Analog Devices, Inc.** All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions are met:* - Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.* - Redistributions in binary form must reproduce the above copyright* notice, this list of conditions and the following disclaimer in* the documentation and/or other materials provided with the* distribution.* - Neither the name of Analog Devices, Inc. nor the names of its* contributors may be used to endorse or promote products derived* from this software without specific prior written permission.* - The use of this software may or may not infringe the patent rights* of one or more patent holders. This license does not release you* from the requirement that you obtain separate licenses from these* patent holders to use this software.* - Use of the software either in source or binary form, must be run* on or directly connected to an Analog Devices Inc. component.** THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.* IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** ** SVN Revision: 697******************************************************************************* //****************************************************************************** //***************************** Include Files **********************************//****************************************************************************** /#include "ADT7420.h"/*****************************************************************************/ /************************ Variables Definitions ******************************//*****************************************************************************/ unsigned char resolutionSetting = 0; /*! Current resolution setting *//***************************************************************************//** * @brief Reads the value of a register.** @param registerAddress - Address of the register.** @return registerValue - Value of the register.******************************************************************************* /unsigned char ADT7420_GetRegisterValue(unsigned char registerAddress){unsigned char registerValue = 0;I2C_Write(ADT7420_ADDRESS,&registerAddress,1,0);I2C_Read(ADT7420_ADDRESS,&registerValue,1,1);return registerValue;}/***************************************************************************//** * @brief Sets the value of a register.** @param registerAddress - Address of the register.* @param registerValue - Value of the register.** @return None.******************************************************************************* /void ADT7420_SetRegisterValue(unsigned char registerAddress,unsigned char registerValue){unsigned char dataBuffer[2] = {0, 0};dataBuffer[0] = registerAddress;dataBuffer[1] = registerValue;I2C_Write(ADT7420_ADDRESS,dataBuffer,2,1);}/***************************************************************************//** * @brief Initializes the communication peripheral and checks if the device is* present.** @return status - The result of the initialization procedure.* Example: 0x0 - I2C peripheral was not initialized or the* device is not present.* 0x1 - I2C peripheral was initialized and the* device is present.******************************************************************************* /unsigned char ADT7420_Init(void){unsigned char status = 0;unsigned char test =0;status = I2C_Init(100000);test = ADT7420_GetRegisterValue(ADT7420_REG_ID);if(test != ADT7420_DEFAULT_ID){status = 0;}return status;}/***************************************************************************//** * @brief Resets the ADT7420.* The ADT7420 does not respond to I2C bus commands while the default* values upload (approximately 200 us).** @return None.******************************************************************************* /void ADT7420_Reset(void){unsigned char registerAddress = ADT7420_REG_RESET;I2C_Write(ADT7420_ADDRESS,&registerAddress,1,1);resolutionSetting = 0;}/***************************************************************************//** * @brief Sets the operational mode for ADT7420.** @param mode - Operation mode.* Example: ADT7420_OP_MODE_CONT_CONV - continuous conversion;* ADT7420_OP_MODE_ONE_SHOT - one shot;* ADT7420_OP_MODE_1_SPS - 1 SPS mode;* ADT7420_OP_MODE_SHUTDOWN - shutdown.** @return None.******************************************************************************* /void ADT7420_SetOperationMode(unsigned char mode){unsigned char registerValue = 0;registerValue = ADT7420_GetRegisterValue(ADT7420_REG_CONFIG);registerValue &= ~ADT7420_CONFIG_OP_MODE(ADT7420_OP_MODE_SHUTDOWN);registerValue |= ADT7420_CONFIG_OP_MODE(mode);ADT7420_SetRegisterValue(ADT7420_REG_CONFIG, registerValue);}/***************************************************************************//** * @brief Sets the resolution for ADT7420.** @param resolution - Resolution.* Example: 0 - 13-bit resolution;* 1 - 16-bit resolution.** @return None.******************************************************************************* /void ADT7420_SetResolution(unsigned char resolution){unsigned char registerValue = 0;registerValue = ADT7420_GetRegisterValue(ADT7420_REG_CONFIG);registerValue &= ~ADT7420_CONFIG_RESOLUTION;registerValue |= (resolution * ADT7420_CONFIG_RESOLUTION);ADT7420_SetRegisterValue(ADT7420_REG_CONFIG, registerValue);resolutionSetting = resolution;}/***************************************************************************//** * @brief Reads the temperature data and converts it to Celsius degrees.** @return temperature - Temperature in degrees Celsius.******************************************************************************* /float ADT7420_GetTemperature(void){unsigned char msbTemp = 0;unsigned char lsbTemp = 0;unsigned short temp = 0;float tempC = 0;msbTemp = ADT7420_GetRegisterValue(ADT7420_REG_TEMP_MSB);lsbTemp = ADT7420_GetRegisterValue(ADT7420_REG_TEMP_LSB);temp = ((unsigned short)msbTemp << 8) + lsbTemp;if(resolutionSetting){if(temp & 0x8000){/*! Negative temperature */tempC = (float)((signed long)temp - 65536) / 128;}else{/*! Positive temperature */tempC = (float)temp / 128;}}else{temp >>= 3;if(temp & 0x1000){/*! Negative temperature */tempC = (float)((signed long)temp - 8192) / 16;}else{/*! Positive temperature */tempC = (float)temp / 16;}}return tempC;}/***************************************************************************//** * @file Communication.c* @brief Implementation of Communication Driver for dsPIC33FJ128MC706A.* @author DBogdan (dragos.bogdan@)******************************************************************************* ** Copyright 2012(c) Analog Devices, Inc.** All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions are met:* - Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.* - Redistributions in binary form must reproduce the above copyright* notice, this list of conditions and the following disclaimer in* the documentation and/or other materials provided with the* distribution.* - Neither the name of Analog Devices, Inc. nor the names of its* contributors may be used to endorse or promote products derived* from this software without specific prior written permission.* - The use of this software may or may not infringe the patent rights* of one or more patent holders. This license does not release you* from the requirement that you obtain separate licenses from these* patent holders to use this software.* - Use of the software either in source or binary form, must be run* on or directly connected to an Analog Devices Inc. component.** THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.* IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** ** SVN Revision: 697******************************************************************************* //****************************************************************************** //***************************** Include Files **********************************//****************************************************************************** /#include "Communication.h"/***************************************************************************//** * @brief Initializes the SPI communication peripheral.** @param lsbFirst - Transfer format (0 or 1).* Example: 0x0 - MSB first.* 0x1 - LSB first.* @param clockFreq - SPI clock frequency (Hz).* The primary and secondary prescalers have to be modified* in order to change the SPI clock frequency* @param clockPol - SPI clock polarity (0 or 1).* Example: 0x0 - Idle state for clock is a low level; active* state is a high level;* 0x1 - Idle state for clock is a high level; active* state is a low level.* @param clockEdg - SPI clock edge (0 or 1).* Example: 0x0 - Serial output data changes on transition* from idle clock state to active clock state;* 0x1 - Serial output data changes on transition* from active clock state to idle clock state.** @return status - Result of the initialization procedure.* Example: 1 - if initialization was successful;* 0 - if initialization was unsuccessful.******************************************************************************* /unsigned char SPI_Init(unsigned char lsbFirst,unsigned long clockFreq,unsigned char clockPol,unsigned char clockEdg){unsigned char status = 1;unsigned long pbFrequency = 80000000;unsigned short brgValue = 0;PMOD1_CS_HIGH;PMOD1_CS_PIN_OUT;brgValue = pbFrequency / (2 * clockFreq) - 1;SPI2CON1 = 0; /*!< Clear the content of SPI2CON registers */SPI2CON2 = 0;/*! Primary prescaler 4:1, Secondary prescaler 8:1, Fcy = 40Mhz. *//*! -->SPI clk = 1.25MHz. */SPI2CON1bits.PPRE = 0b10; /*!< Primary Presacler 4:1*/SPI2CON1bits.SPRE = 0b000; /*!< Secondary Prescaler 8:1*/SPI2CON1bits.CKE = clockEdg; /*!< SPI Clock Edge Select bit */SPI2CON1bits.CKP = clockPol; /*!< Clock Polarity Select bit */SPI2CON1bits.MSTEN = 1; /*!< Enable master mode */SPI2STATbits.SPIEN = 1; /*!< Enable SPI peripheral */return status;}/***************************************************************************//** * @brief Writes data to SPI.** @param slaveDeviceId - The ID of the selected slave device.* @param data - Data represents the write buffer.* @param bytesNumber - Number of bytes to write.** @return Number of written bytes.******************************************************************************* /unsigned char SPI_Write(unsigned char slaveDeviceId,unsigned char* data,unsigned char bytesNumber){unsigned char byte = 0;unsigned char tempByte = 0;if(slaveDeviceId == 1){PMOD1_CS_LOW;}for(byte = 0; byte < bytesNumber; byte++){SPI2BUF = data[byte];while(SPI2STATbits.SPIRBF == 0);tempByte = SPI2BUF;}if(slaveDeviceId == 1){PMOD1_CS_HIGH;}return bytesNumber;}/***************************************************************************//** * @brief Reads data from SPI.** @param slaveDeviceId - The ID of the selected slave device.* @param data - Data represents the read buffer.* @param bytesNumber - Number of bytes to read.** @return Number of read bytes.******************************************************************************* /unsigned char SPI_Read(unsigned char slaveDeviceId,unsigned char* data,unsigned char bytesNumber){unsigned char byte = 0;unsigned char writeBuffer[4] = {0, 0, 0, 0};for(byte = 0; byte < bytesNumber; byte++){writeBuffer[byte] = data[byte];}if(slaveDeviceId == 1){PMOD1_CS_LOW;}for(byte = 0; byte < bytesNumber; byte++){SPI2BUF = writeBuffer[byte];while(SPI2STATbits.SPIRBF == 0);data[byte] = SPI2BUF;}if(slaveDeviceId == 1){PMOD1_CS_HIGH;}return bytesNumber;}/***************************************************************************//** * @brief Initializes the I2C communication peripheral.** @param clockFreq - I2C clock frequency (Hz).* Example: 100000 - SPI clock frequency is 100 kHz.* @return status - Result of the initialization procedure.* Example: 1 - if initialization was successful;* 0 - if initialization was unsuccessful.******************************************************************************* /unsigned char I2C_Init(unsigned long clockFreq){unsigned char status = 1;unsigned long pbFrequency = 80000000;unsigned short brgValue = 0;I2C1CON = 0; /*!< Clear the content of I2C1CON register *//*! Fsck = Fpb / ((I2CxBRG + 2) * 2) */brgValue = pbFrequency / (2 * clockFreq) - 2;I2C1BRG = brgValue;I2C1CONbits.I2CEN = 1; /*!< Enable the I2C module and configure the SDA and *//*! SCL pins as serial port pins */I2C1CONbits.ACKEN = 1;return status;}/***************************************************************************//** * @brief Writes data to a slave device.** @param slaveAddress - Adress of the slave device.* @param dataBuffer - Pointer to a buffer storing the transmission data.* @param bytesNumber - Number of bytes to write.* @param stopBit - Stop condition control.* Example: 0 - A stop condition will not be sent;* 1 - A stop condition will be sent.** @return status - Number of read bytes or 0xFF if the slave address was not* acknowledged by the device.*******************************************************************************unsigned char I2C_Write(unsigned char slaveAddress,unsigned char* dataBuffer,unsigned char bytesNumber,unsigned char stopBit){unsigned char status = 0;unsigned char acknowledge = 0;unsigned char byte = 0;I2C1CONbits.SEN = 1; /*!< Initiate a start condition */while(I2C1CONbits.SEN); /*!< Wait for start condition to complete */I2C1TRN = slaveAddress << 1;while(I2C1STATbits.TRSTAT); /*!< Wait for transmition to complete */acknowledge = I2C1STATbits.ACKSTAT;if(acknowledge == 0) /*!< Acknowledge was received */{for(byte = 0; byte < bytesNumber; byte++){I2C1TRN = dataBuffer[byte];while(I2C1STATbits.TRSTAT); /*!< Wait for transmition to complete */ }}else{status = 0xFF;}if(stopBit){I2C1CONbits.PEN = 1; /*!< Initiate a stop condition */while(I2C1CONbits.PEN); /*!< Wait for stop condition to copmlete */ }return status;}/***************************************************************************//** * @brief Reads data from a slave device.** @param slaveAddress - Adress of the slave device.* @param dataBuffer - Pointer to a buffer that will store the received data.* @param bytesNumber - Number of bytes to read.* @param stopBit - Stop condition control.* Example: 0 - A stop condition will not be sent;* 1 - A stop condition will be sent.** @return status - Number of read bytes or 0xFF if the slave address was not* acknowledged by the device.******************************************************************************* /unsigned char I2C_Read(unsigned char slaveAddress,unsigned char* dataBuffer,unsigned char bytesNumber,unsigned char stopBit){unsigned char status = bytesNumber;unsigned char acknowledge = 0;unsigned char byte = 0;I2C1CONbits.SEN = 1; /*!< Initiate a start condition */while(I2C1CONbits.SEN); /*!< Wait for start condition to complete */I2C1TRN = (slaveAddress << 1) + 1;while(I2C1STATbits.TRSTAT); /*!< Wait for transmition to complete */acknowledge = I2C1STATbits.ACKSTAT;if(acknowledge == 0) /*!< Acknowledge was received */{for(byte = 0; byte < bytesNumber; byte++){I2C1CONbits.RCEN = 1; /*!< Enable receive mode for I2C */if(byte == (bytesNumber - 1)){I2C1CONbits.ACKDT = 1;}else{I2C1CONbits.ACKDT = 0;}while(I2C1CONbits.RCEN); /*!< Wait for reception to complete */I2C1CONbits.ACKEN = 1;while(I2C1CONbits.ACKEN);dataBuffer[byte] = I2C1RCV;}}else{status = 0xFF;}if(stopBit){I2C1CONbits.PEN = 1; /*!< Initiate a stop condition */while(I2C1CONbits.PEN); /*!< Wait for stop condition to copmlete */ }return status;}/***************************************************************************//** * @file Main.c* @brief Implementation of the program's main function.* @author Bancisor Mihai******************************************************************************* ** Copyright 2012(c) Analog Devices, Inc.** All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions are met:* - Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.* - Redistributions in binary form must reproduce the above copyright* notice, this list of conditions and the following disclaimer in* the documentation and/or other materials provided with the* distribution.* - Neither the name of Analog Devices, Inc. nor the names of its* contributors may be used to endorse or promote products derived* from this software without specific prior written permission.* - The use of this software may or may not infringe the patent rights* of one or more patent holders. This license does not release you* from the requirement that you obtain separate licenses from these* patent holders to use this software.* - Use of the software either in source or binary form, must be run* on or directly connected to an Analog Devices Inc. component.** THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.* IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** ** SVN Revision: 697******************************************************************************* /。

相关文档
最新文档