原创 开源物联网技术--数字温度传感器SCCK33112H6A软硬件设计分享

2024-9-26 12:14 144 1 1 分类: 物联网


01

物联网系统中为什么要使用数字式温度传感器


物联网系统中使用数字式温度传感器芯片的原因主要有以下几点:

高精度与稳定性

  • 高精度测量:数字式温度传感器芯片,如DS18B20,采用芯片集成技术,能够有效抑制外界不同程度的干扰,从而提供高精度的温度测量。这对于物联网系统来说至关重要,因为准确的温度数据是许多应用(如冷链监控、智能家居温控等)的基础。
  • 稳定性强:相较于模拟式温度传感器,数字式芯片在电路设计、信号处理等方面更加稳定,减少了因电路波动或环境变化导致的测量误差。

直接数字输出与易处理

  • 直接数字输出:数字式温度传感器芯片直接输出串行数字信号,无需进行模拟到数字的转换,简化了后续的数据处理流程。这对于物联网系统中的微控制器或处理器来说,可以直接接收并处理这些数字信号,提高了系统的整体效率和响应速度。
  • 接口简单:数字式温度传感器的接口设计简洁,便于与物联网系统中的其他设备进行连接和通信。这降低了系统集成的复杂度,并提高了系统的可扩展性。

抗干扰能力强

  • 单总线技术:许多数字式温度传感器芯片采用单总线技术,这种技术不仅简化了通信线路,还增强了芯片的抗干扰能力。在物联网环境中,各种设备通过无线网络进行通信,容易受到电磁干扰等因素的影响。数字式温度传感器的抗干扰能力能够有效保障数据的准确传输。

成本控制与开发周期

  • 成本控制:虽然数字式温度传感器芯片在初始投资上可能略高于某些模拟式传感器,但其高精度、稳定性和易处理的特点使得系统整体成本得到有效控制。此外,随着生产规模的扩大和技术的成熟,数字式传感器的成本也在不断降低。
  • 缩短开发周期:数字式温度传感器芯片的设计简洁、易于使用,有助于缩短物联网系统的开发周期。开发人员可以更快地完成传感器的集成和调试工作,从而加速产品的上市速度。

具体应用场景

智能家居

在智能家居中,数字温度传感器被广泛应用于室内环境温度的测量和控制。通过将数字温度传感器嵌入到智能家居设备中,如空调、地暖、暖气等,可以实现对室内温度的自动优化调节,提高用户的生活舒适度。这些传感器能够实时监测室内温度,并根据预设的温度范围自动调节设备的工作状态,从而实现节能和舒适度的平衡。

医疗设备

在医疗设备中,数字温度传感器也发挥着重要作用。它们通常被用于体温测量或手术过程中的温度监测等方面。相比传统的温度计测量方式,数字温度传感器具有精度高、响应快等优点,能够更加准确地反映体温的变化情况,为医疗人员提供更加科学有效的诊断依据。同时,在医疗设备的温度控制系统中,数字温度传感器也扮演着重要角色,确保设备在适宜的温度下运行,保障患者的安全。

工业控制

在工业控制领域,数字温度传感器被广泛应用于温度控制和保护。通过将数字温度传感器嵌入到工业设备中,如熔炉、烤箱、冶金设备等,可以实现对设备内部温度的实时监测和控制。这有助于确保生产过程中的温度稳定性,提高生产效率和产品质量。同时,在设备出现过热等异常情况时,数字温度传感器能够迅速发出警报,保护设备免受损坏,降低生产风险。

农业领域

在农业领域,数字温度传感器也被用于监测和控制温室、大棚等农业设施的温度。通过实时监测温度,农民可以了解农作物的生长环境,并采取相应的措施来调节温度,为农作物提供适宜的生长条件。这有助于提高农作物的产量和品质,促进农业生产的可持续发展。

其他领域

除了以上几个领域外,数字温度传感器还广泛应用于其他多个领域。例如,在汽车电子中,数字温度传感器被用于监测发动机冷却水温度、进气温度等参数;在航空航天领域,数字温度传感器被用于监测飞机、火箭等设备的温度状况;在环境监测中,数字温度传感器被用于监测大气温度、海洋温度等环境参数。

综上所述,物联网系统中使用数字式温度传感器芯片可以带来高精度、稳定性、易处理、抗干扰能力强以及成本控制和开发周期缩短等多重优势。这些优势使得数字式温度传感器芯片成为物联网系统中不可或缺的重要组件。



02

数字式温度传感器的行业知识介绍


数字式温度传感器芯片定义:

数字式温度传感器(芯片):就是能把温度物理量和湿度物理量,通过温度敏感元件和相应电路转换成方便计算机、plc、智能仪表等数据采集设备直接读取得数字量的传感器。

数字温度传感器(芯片)是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种数字温度传感器(芯片)系列产品。数字温度传感器(芯片)内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。数字温度传感器(芯片)的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化也取决于软件的开发水平。

数字式温度传感器芯片产品原理:

数字式温度传感器(芯片)采用硅工艺生产的数字式温度传感器,其采用PTAT结构,这种半导体结构具有精确的,与温度相关的良好输出特性。PTAT的输出通过占空比比较器调制成数字信号,占空比与温度的关系如下式:DC=0.32 0.0047*t,t为摄氏度。输出数字信号故与微处理器MCU兼容,通过处理器的高频采样可算出输出电压方波信号的占空比,即可得到温度。该款温度传感器因其特殊工艺,分辨率优于0.005K。

数字式温度传感器芯片

测温过程:将敏感元件、A/D转换单元、存储器等集成在一个芯片上,直接输出反应被测温度的数字信号,使用方便,但响应速度较慢(100ms数量级)。如温度IC,温度集成电路(IC)是一种数字温度传感器,它有非常线性的电压∕电流—温度关系。有些IC传感器甚至有代表温度、并能被微处理器直接读出的数字输出形式。有两类具有如下温度关系的温度IC:电压IC: 10 mV/K;电流IC: 1μA/K。

开始供电时,数字温度传感器(芯片)处于能量关闭状态,供电之后用户通过改变寄存器分辨率使其处于连续转换温度模式或者单一转换模式。在连续转换模式下,数字温度传感器(芯片)连续转换温度并将结果存于温度寄存器中,读温度寄存器中的内容不影响其温度转换;在单一转换模式,数字温度传感器(芯片)执行一次温度转换,结果存于温度寄存器中,然后回到关闭模式,这种转换模式适用于对温度敏感的应用场合。在应用中,用户可以通过程序设置分辨率寄存器来实现不同的温度分辨率,其分辨率有8位、9位、10位、11位或12位五种,对应温度分辨率分别为1.0℃、0.5℃、0.25℃、0.125℃或0.0625℃,温度转换结果的默认分辨率为9位。

数字式温度传感器芯片优缺点:

数字温度传感器芯片的优点

  • 高精度:数字温度传感器芯片通常具有较高的测量精度和稳定性,能够提供更准确的温度读数。这得益于其内置的模数转换器(ADC)和校准算法,使得温度信号在转换为数字信号时更加精确。
  • 快速响应:数字温度传感器芯片的响应速度通常比模拟温度传感器更快,因为它们能够实时监测并快速反馈温度变化。这种快速响应特性对于需要实时温度控制的场合尤为重要。
  • 抗干扰能力强:数字温度传感器芯片采用数字信号输出,相比模拟信号,数字信号在传输过程中更不容易受到电磁干扰和噪声的影响,从而提高了系统的稳定性和可靠性。
  • 易于集成和处理:数字温度传感器芯片可以直接与数字电路连接,无需进行信号放大、滤波和模数转换等复杂处理过程,简化了电路设计,降低了系统成本。同时,数字信号也便于进行数字信号处理和远程传输。
  • 低功耗:由于数字温度传感器芯片采用先进的CMOS工艺制造,其功耗通常较低,适合用于电池供电等对电源要求较高的场合。

模拟温度传感器的优点

  • 成本较低:在某些情况下,模拟温度传感器的成本可能低于数字温度传感器芯片,尤其是对于一些简单的温度测量应用。
  • 适应性强:模拟温度传感器可以适应更广泛的温度范围和工作环境条件,因为它们通常不需要额外的电源或复杂的电路支持。

数字温度传感器芯片的缺点

  • 价格较高:相比模拟温度传感器,数字温度传感器芯片通常价格较高。这主要是由于其生产工艺复杂、集成度高以及附加功能多等因素导致的。然而,随着生产技术的不断进步和市场规模的扩大,数字温度传感器芯片的价格有望逐渐降低。
  • 需要外部电源:虽然数字温度传感器芯片本身功耗较低,但仍然需要外部电源供电。在一些低功耗或无电源的应用场景中,这可能会成为一个限制因素。然而,随着低功耗设计技术的发展,一些数字温度传感器芯片已经能够实现自供电或低功耗运行。

模拟温度传感器的缺点

  • 精度较低:模拟温度传感器的精度通常低于数字温度传感器芯片。它们可能受到多种因素的影响,如温度漂移、非线性误差和噪声等,从而导致测量精度下降。
  • 易受干扰:模拟信号在传输过程中容易受到电磁干扰和噪声的影响,导致测量结果不准确。这需要采取额外的措施来降低干扰和噪声的影响。
  • 处理复杂:模拟温度传感器输出的信号通常需要经过放大、滤波和模数转换等复杂处理过程才能被数字系统使用。这增加了系统的复杂性和成本。

数字式温度传感器芯片分类:

单总线接口

单总线(1-wire)是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同,它采用单根信号线传输。 这种协议由一个总线主节点、或多个从节点组成系统,通过根信号线对从芯片进行数据的读取。每一个符合单总线协议的从芯片都有一个唯一的地址,包括48位的序列号、8位的家族代码和8位的CRC代码。主芯片根据64位寻址对各个芯片进行双向通信,因此其协议对时序的要求较严格,初始化、写bit或读bit都有严格的时序要求,但是位于位之间没有严格要求。

单总线的数据传输速率一般为16.3Kbit/s,最大可达142 Kbit/s,通常情况下采用100Kbit/s以下的速率传输数据。主设备I/O口可直接驱动200m范围内的从设备,经过扩展后可达1km范围。

这种传输方式信号线上既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。

单总线只有一根数据线,设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设各所使用。单总线端口为漏极开路,其内部等效电路下图所示:

单总线电路外接一个约5K的上拉电阻,当单总线处于空闲状态时为高电平,如果总线保持低电平超过480us,总线上的所有器件将复位。另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉。

单总线温度传感器主要有数字温度传感器(如DS18B20)、DHT11等。

SPI总线接口

SPI 是一种四线制串行总线接口,为主/从结构,四条导线分别为串行时钟(SCLK)、主出从入(MOSI、主入从出(MISO)和从选(SS)信号。主器件为时钟提供者,可发起读从器件或写从器件操作。这时主器件将与一个从器件进行对话。当总线上存在多个从器件时,要发起一次传输,主器件将把该从器件选择线拉低,然后分别通过MOSI 和MISO 线启动数据发送或接收。

SPI 时钟速度很快,范围可从几兆赫兹到几十兆赫兹,且没有系统开销。SPI 在系统管理方面的缺点是缺乏流控机制,无论主器件还是从器件均不对消息进行确认,主器件无法知道从器件是否繁忙。因此必须设计聪明的软件机制来处理确认问题。同时SPI 也没有多主器件协议,必须采用很复杂的软件和外部逻辑来实现多主器件架构。每个从器件需要一个单独的从选择信号。总信号数最终为n+3 个,其中n是总线上从器件的数量。因此,导线的数量将随增加的从器件的数量按比例增长。同样,在SPI 总线上添加新的从器件也不方便。对于额外添加的每个从器件,都需要一条新的从器件选择线或解码逻辑。

IIC总线接口

I2C 是一种二线制串行总线接口,工作在主/从模式。二线通信信号分别为开漏SCL 和SDA 串行时钟和串行数据。主器件为时钟源。数据传输是双向的,其方向取决于读/写位的状态。每个从器件拥有一个唯一的7 或10 位地址。主器件通过一个起始位发起一次传输,通过一个停止位终止一次传输。起始位之后为唯一的从器件地址,再后为读/写位。

I2C总线速度为从0Hz到3.4MHz。它没有SPI 那样快,但对于系统管理器件如温度传感器来说则非常理想。I2C 存在系统开销,这些开销包括起始位/停止位、确认位和从地址位,但它因此拥有流控机制主器件在完成接收来自从器件的数据时总是发送一个确认位,除非其准备终止传输。从器件在其接收到来自主器件的命令或数据时总是发送一个确认位。当从器件未准备好时,它可以保持或延展时钟,直到其再次准备好响应。

I2C允许多个主器件工作在同一总线上。多个主器件可以轻松同步其时钟,因此所有主器件均采用同一时钟进行传输。多个主器件可以通过数据仲裁检测哪一个主器件正在使用总线,从而避免数据破坏。由于I2C总线只有两条导线,因此新从器件只需接入总线即可,而无需附加逻辑。

SMBus总线接口

SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总线规范。和I2C样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能特性,但只工作在100kHz且专门面向智能电池管理应用。它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始位,在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。

SMBus与I2C总线之间在时序特性上存在一些差别。首先,SMBus需要一定数据保持时间,而I2C总线则是从内部延长数据保持时间。SMBus具有超时功能,因此当SCL太低而超过35 ms时,从器件将复位正在进行的通信。相反,I2C采用硬件复位。SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。SMBus只工作在从10kHz到最高100kHz。最低工作频率10kHz是由SMBus超时功能决定的。

单线脉冲总线接口

单线脉冲输出数字温度传感器支持计数式通信,仅需单根信号线即可同时完成芯片供电和通信输出功能,有效降低MCU开销和成本。中科银河芯自主研发设计的产品GX0011可直接替代NTC热敏电阻,无需任何外部感温单元即可实现12位(0.0625℃)温度输出,在-50°C~ +150°C的正常工作范围内,测温精度误差< ±1℃,并具有良好的温度线性度曲线,适用于通信、计算机、消费电子、环境、工业和仪器仪表等应用场景。

GX0011 支持两种连接方式:上拉连接和下拉连接。需要注意的是,当采用下拉连接时,脉冲将从 GND 引脚(即拉电阻侧)输出,且总线极性与上拉连接方式相反,上电时 GND 引脚为低电平,温度转换完成后 GND 引脚周期发送高脉冲(占空比 25%)。

在单点应用中,上位机 MCU 仅需要一个 GPIO 口来对脉冲次数进行计数,可以有效节省 GPIO 资源。单点应用参考电路如下:

在多点应用中,所有 GX0011 共享 GPIO0 作为脉冲计数端口,并且共用同一上下拉电阻。通过将 GPIO1 到GPIOn 中的一个拉低(下拉连接则为拉高)可以使能相应的 GX0011 测温节点。其余不用节点必须设置为高阻(或 两脚短接)状态。注意:如果两个及以上节点同时使能,相互之间会产生数据冲突。

上图所示,如果MCU接多个测温终端,需要占用过多IO资源,为解决上述问题,申矽凌(Sensylink)凭借其在热管理这一细分领域的技术积累,推出了总线式脉冲计数接口数字温度传感器芯片产品CT1721。支持在一个I/O PIN上,允许最多并联9颗产品,通过脉冲计数接口,同时监控九个区域的温度数据。用户通过2个PIN(AD0, AD1)设置不同的地址码(每个PIN通过接GND,DIO以及悬空,定义为3种状态),达到在总线上区分的目的。工作电压范围:1.4V - 5.5V,满足绝大多数系统温度测量/监控场景。

数字式温度传感器芯片选型:

测量范围和精度

  • 测量范围:首先确定所需测量的温度范围,并选择能够覆盖该范围的传感器。例如,对于极低温度或极高温度的应用,需要选择具有相应测量范围的特殊传感器。
  • 精度:根据应用对温度测量的精确度要求选择合适的传感器。精度表示传感器读数和系统实际温度之间的误差,通常针对不同温度范围有数个最高精度指标。

输出信号类型

数字温度传感器有多种输出信号类型,包括模拟信号、数字信号、总线信号(如I2C、SPI)等。根据控制系统或显示设备的需求选择合适的输出信号类型。

测量方式

  • 接触式:传感器需要与被测物体接触,适用于需要精确测量物体表面或内部温度的场景。
  • 非接触式(如红外线传感器):通过测量物体表面发射的红外线辐射能量来测量温度,适用于不接触物体、远距离测量的场景。

响应速度

根据实际应用场景的响应时间要求进行选择。对于需要快速响应的应用,如汽车电子领域,应选择响应速度更快的数字温度传感器。

抗干扰性能

在一些复杂环境下,数字温度传感器需要具备一定的抗干扰性能,以应对电磁干扰、振动干扰等。

成本和体积

  • 成本:在满足性能要求的前提下,考虑传感器的成本和性价比。对于成本敏感的应用场景,可以选择价格较为低廉的数字温度传感器。
  • 体积:对于空间有限的应用场景,选择体积更小的数字温度传感器更为合适。

其他因素

  • 防护等级和防爆等级:根据实际工作环境选择合适的防护等级和防爆等级。
  • 品牌和售后服务:选择知名品牌和有良好售后服务的数字温度传感器,以保证产品质量和售后服务支持。
  • 校准和标定:考虑是否需要校准或标定传感器以获得更准确的测量结果。一些传感器在出厂时已经过校准,而其他传感器则可能需要在使用前进行校准。

数字式温度传感器芯片的厂商

霍尼韦尔(Honeywell)

  • 公司简介:霍尼韦尔国际公司是一家在技术和制造业方面占世界领先地位的多元化跨国公司。其业务涉及多个领域,包括航空航天、住宅及楼宇控制、工业控制技术等。霍尼韦尔在传感器技术方面有着深厚的积累,其数字温度传感器在全球市场上享有很高的声誉。
  • 应用领域:霍尼韦尔的数字温度传感器被广泛应用于工业自动化、航空航天、医疗设备等多个领域。

西门子(Siemens)

  • 公司简介:西门子是全球电子电气工程领域的领先企业,自1872年进入中国以来,以创新的技术和卓越的解决方案支持中国的发展。西门子在传感器领域有着丰富的产品线,包括多种类型的温度传感器。
  • 应用领域:西门子的数字温度传感器在工业自动化、能源、交通等领域得到广泛应用。

德州仪器(Texas Instruments, TI)

  • 公司简介:德州仪器是一家全球知名的半导体公司,主要从事设计制造、测试销售模拟以及嵌入芯片处理服务。其在数字温度传感器领域拥有强大的技术实力和丰富的产品线。
  • 应用领域:TI的数字温度传感器被广泛应用于消费电子、汽车电子、工业控制等多个领域。

意法半导体(STMicroelectronics, ST)

  • 公司简介:意法半导体是全球规模较大的微电子产品生产企业,其产品涵盖高性能控制器、安全型智能卡芯片等多个领域。意法半导体在温度传感器领域也有着丰富的产品线和广泛的应用。
  • 应用领域:意法半导体的数字温度传感器在汽车电子、工业控制、智能家居等领域得到广泛应用。

其他厂商

除了以上几家知名厂商外,还有许多其他优秀的数字温度传感器厂商,如Amphenol、Sensata、TDK、华工科技、正泰新能源等。这些厂商在各自的领域内都具有一定的技术实力和市场份额,为数字温度传感器行业的发展做出了重要贡献。


03

数字式温度传感器的硬件设计方案


本文主要采用了北京智芯微电子科技有限公司的SCCK33112H6A做为驱动芯片。

SCCK33112H6A是一款高精度、低功耗、可替代NTC/PTC热敏电阻的数字温度传感器,可用于通信、计算机、消费类电子、环境、工业和仪器仪表应用中的温度测量。SCCK33112H6A在-40°C至+125°C的正常工作范围内,可提供≤±0.5℃的温度精度,并具有良好的温度线性度。SCCK33112H6A可提供扩展测温模式,将测温范围扩展为-55℃至+150℃。SCCK33112H6A的额定工作电压范围为1.4V~5.5V,在整个工作范围内最大静态电流为10µA(测温频率4Hz时)。集成在芯片内部的12位ADC分辨率低至0.0625°C。

SCCK33112H6A采用1.6mm×1.6mm的SOT563 /DFNWB封装,兼容SMBus和I2C接口,在一条总线上最多可挂载四个从机,并具有SMBus报警功能。

基 本 性 能

•测温范围:-55°C ~ +150°C

•测温精度:±0.5°C(-40°C ~ +125°C)

•封装:6-Pin SOT563(1.60 mm × 1.60 mm)

6-Pin DFNWB(1.60 mm × 1.60 mm)

•电源电压:1.4V ~ 5.5V

•低静态电流

正常工作:≤10μA(4Hz)

关断模式:≤1μA

•分辨率:0.0625°C

•数字输出:兼容SMBus™、I2C接口

应 用 场 景

•便携式、电池供电应用

•电源温度监控

•电脑外部设备热保护

•笔记本电脑

•电池管理

•办公机器

•恒温控制

•机电设备温度

•一般温度测量:

– 工业控制

– 测验设备

– 医疗仪器

  • 硬件参考设计

  • 研发设计注意使用事项

在 SCCK33112H6A 的 V+引脚上添加一个 RC 滤波器可以进一步降低外部噪声的影响,如下图所示,其中的 RF 必须小于 5kΩ,CF 必须大于 10nF。

实际测温中,需将 SCCK33112H6A 放置在被监控的热源附近,并采用适当的布局以实现良好的热

耦合,确保在最短的时间间隔内捕获温度变化。为了在需要测量空气或表面温度的应用中保持精度,请注

意将封装和引线与环境温度隔离。导热粘合剂有助于实现精确的表面温度测量。


04

数字式温度传感器的软件设计方案


本文采用了奇迹物联的红豆版开源技术平台为主控单元,一步步手把手教会读者如何使用红豆版开源平台编写SCCK33112H6A驱动。这里对代码就不多详解,如果需要详细了解,请到奇迹物联的红豆版开源平台了解详细代码讲解。

1 Gitee链接地址

Demo位于amaziot_bloom_os_sdk\sample\3rd\1.1_SCCK33112H6A

Gitee源码地址:https://gitee.com/ning./hongdou

Github源码地址:https://github.com/ayumid/hongdou

编译指令:.\build.bat -l .\amaziot_bloom_os_sdk\sample\3rd\1.1_SCCK33112H6A

2 组件功能介绍

驱动温度芯片,定时读取芯片寄存器,计算出当前温度,设置温度高限,低限,当温度触发门限后,会产生中断,用户在使用时,可以根据中断相关服务函数,进行后续的处理。

3 代码讲解

1 drv_scck33112h6a_i2c_init

功能:该函数用于,将发送数据长度写入scck33112h6a寄存器。

参数:五

返回值:无

示例:

C
//初始化i2c总线
ret = drv_scck33112h6a_i2c_init();

2 drv_scck33112h6a_i2c_read

功能:该函数用于,读取I2C从机。

参数:五

返回值:无

示例:

C
RegAddr = 0x00;
ret = drv_scck33112h6a_i2c_read(&RegAddr, &RegReadValue0);
sample_scck33112h6a_catstudio_printf("read reg 00 i2c value=0x%x, ret=%d\n", RegReadValue0, ret);

3 drv_scck33112h6a_i2c_write

功能:该函数用于,发送数据到I2C从机。

参数:五

返回值:无

示例:

C
RegAddr = 0x06;
RegWriteValue = 0xFF;
ret = drv_scck33112h6a_i2c_write(&RegAddr, &RegReadValue0);
sample_scck33112h6a_catstudio_printf("write i2c value=0x%x, ret=%d\n", RegWriteValue, ret);

4 Demo实战

4.1 创建一个Demo

复制20.1_file_xtu示例工程,到同一个文件夹下,修改文件名为3.1_SSD1315,如图:

4.2 修改makefile

增加文件组件所在目录头文件路径,和源文件路径,如图:

4.3 增加头文件

使用代码编辑器,将新建的工程文件加入代码编辑器中,打开main.c,修改main.c,加入am.h等头文件,如图:

4.4 修改代码

在Phase2Inits_exit 创建一个任务,如图:

4.5 宏定义介绍

  • sample_scck33112h6a_uart_printf

输出日志到DEBUG 串口,日志比较少,可以输出到这个串口,如果日志比较多,需要输出到usb口,以免不必要的问题出现

  • sample_scck33112h6a_catstudio_printf

输出日志到USB 串口,使用catstudio查看,catstudio查看日志需要更新对应版本mdb.txt文件,软件打开filtter过滤日志,只查看用户输出的日志

  • SAMPLE_SSCK33112H6A_STACK_SIZE

栈空间宏定义

4.6 全局变量介绍

  • sample_scck33112h6a_int_detect_stack_ptr

任务栈空间,本例使用数组实现,用户在做项目时,可以预先估算下当先任务需要的大致栈空间,OS没有提供可以查看栈空间使用情况的API

  • sample_scck33112h6a_int_detect_task_ref

任务指针

4.7 函数介绍

  • Phase1Inits_enter

底层初始化,本例空

  • Phase1Inits_exit

底层初始化,本例空

  • Phase2Inits_enter

底层初始化,本例空

  • Phase2Inits_exit

创建主任务,初始化消息队列,定时器,任务等。

代码片段:

C
int ret = 0;
GPIOConfiguration config = {0};

//创建定时器
OSATimerCreate(&sample_scck33112h6a_int_detect_timer_ref);
//创建中断事件
OSAFlagCreate( &sample_scck33112h6a_int_detect_flg_ref);
Os_Create_HISR(&sample_scck33112h6a_int_detect_hisr, "sample_scck33112h6a_int_detect_hisr", sample_scck33112h6a_detect_handler, 2);
//创建中断处理任务
OSATaskCreate(&sample_scck33112h6a_int_detect_task_ref, sample_scck33112h6a_int_detect_stack_ptr, SAMPLE_SSCK33112H6A_STACK_SIZE, 100, "detect_task", sample_scck33112h6a_detect_task, NULL);
//创建中断处理任务
OSATaskCreate(&sample_scck33112h6a_read_task_ref, sample_scck33112h6a_read_stack_ptr, SAMPLE_SSCK33112H6A_STACK_SIZE, 100, "read_task", sample_scck33112h6a_read_task, NULL);

//初始化int引脚,这里使用70脚 gpio126
config.pinDir = GPIO_IN_PIN;
config.pinEd = GPIO_TWO_EDGE;
config.pinPull = GPIO_PULLUP_ENABLE;
config.isr = sample_scck33112h6a_irq_handler;
GpioInitConfiguration(SAMPLE_GPIO_ISR_PIN_NUM, config);

  • sample_scck33112h6a_read_task

主任务,获取读温度信息等参数信息。

代码片段:

C
void sample_scck33112h6a_read_task(void *param)
{
GPIO_ReturnCode ret = 0;
UINT32 value = 0;
OSA_STATUS status = OS_SUCCESS;
UINT32 flag_value = 0;
unsigned char RegAddr = 0;
UINT8 pR1_Data[2] = {0};
UINT16 reg0 = 0;
UINT16 reg1 = 0;
UINT16 reg2 = 0;
UINT16 reg3 = 0;

//初始化i2c总线
ret = drv_scck33112h6a_i2c_init();
sample_scck33112h6a_catstudio_printf("ql_i2c_init ret %d", ret);
//等1s
OSATaskSleep(1 * 200);

//写配置寄存器
RegAddr = DRV_SCCK33112H6A_REGISTER1_ADDRESS;
pR1_Data[0] = 0x60;
pR1_Data[1] = 0x90;
ql_i2c_write_ext(DRV_SCCK33112H6A_I2C_NUM, DRV_SCCK33112H6A_I2C_SLAVE_ADDR, &RegAddr , 1, pR1_Data, 2);
RegAddr = DRV_SCCK33112H6A_REGISTER3_ADDRESS;
//写温度高限寄存器
pR1_Data[0] = 0x11;
pR1_Data[1] = 0x00;
ql_i2c_write_ext(DRV_SCCK33112H6A_I2C_NUM, DRV_SCCK33112H6A_I2C_SLAVE_ADDR, &RegAddr , 1, pR1_Data, 2);
//写温度低限寄存器
RegAddr = DRV_SCCK33112H6A_REGISTER2_ADDRESS;
pR1_Data[0] = 0x0A;
pR1_Data[1] = 0x00;
ql_i2c_write_ext(DRV_SCCK33112H6A_I2C_NUM, DRV_SCCK33112H6A_I2C_SLAVE_ADDR, &RegAddr , 1, pR1_Data, 2);
//读配置寄存器
RegAddr = DRV_SCCK33112H6A_REGISTER1_ADDRESS;
ql_i2c_read_ext(DRV_SCCK33112H6A_I2C_NUM, DRV_SCCK33112H6A_I2C_SLAVE_ADDR, &RegAddr , 1, pR1_Data, 2);
reg1 = (UINT16)(pR1_Data[0] << 8 + pR1_Data[1]);
sample_scck33112h6a_catstudio_printf("reg1 value=0x%x, ret=%d\n", reg1, ret);
//读温度高限寄存器
RegAddr = DRV_SCCK33112H6A_REGISTER3_ADDRESS;
ql_i2c_read_ext(DRV_SCCK33112H6A_I2C_NUM, DRV_SCCK33112H6A_I2C_SLAVE_ADDR, &RegAddr , 1, pR1_Data, 2);
reg3 = (UINT16)(pR1_Data[0] << 8 + pR1_Data[1]) >> 4;
sample_scck33112h6a_catstudio_printf("reg3 value=0x%x, ret=%d\n", reg3, ret);
//读温度低限寄存器
RegAddr = DRV_SCCK33112H6A_REGISTER2_ADDRESS;
ql_i2c_read_ext(DRV_SCCK33112H6A_I2C_NUM, DRV_SCCK33112H6A_I2C_SLAVE_ADDR, &RegAddr , 1, pR1_Data, 2);
reg3 = (UINT16)(pR1_Data[0] << 8 + pR1_Data[1]) >> 4;
sample_scck33112h6a_catstudio_printf("reg2 value=0x%x, ret=%d\n", reg3, ret);

//等1s
OSATaskSleep(1 * 200);

while(1)
{
RegAddr = DRV_SCCK33112H6A_REGISTER0_ADDRESS;
ql_i2c_read_ext(DRV_SCCK33112H6A_I2C_NUM, DRV_SCCK33112H6A_I2C_SLAVE_ADDR, &RegAddr , 1, pR1_Data, 2);
float temp = 0.0;
int data = 0;
data = (pR1_Data[0] << 8 | pR1_Data[1]) >> 4;
//判断如果是负数,需要按照二进制补码,去掉符号位,减一取反后取低12位,再乘0.0625,再用0减变为负数
if((data & DRV_SCCK33112H6A_TEMP_SIGNED) == DRV_SCCK33112H6A_TEMP_SIGNED)
{
temp = (float)(0 - (~((data & DRV_SCCK33112H6A_TEMP_MSK) - 1) & DRV_SCCK33112H6A_TEMP_MSK) * DRV_SCCK33112H6A_TEMP_1LSB);
}
//正数直接乘0.0625
else
{
temp = (float)data * DRV_SCCK33112H6A_TEMP_1LSB;
}
sample_scck33112h6a_catstudio_printf("data: 0x%X data: %d temp:%f\n", data, data, temp);
sample_scck33112h6a_catstudio_printf("temprature:%f\n", temp);
//等1s
OSATaskSleep(1 * 200);
}
}

4.8 编译

在SDK根目录打开命令行,输入命令.\build.bat -l .\amaziot_bloom_os_sdk\sample\3rd\1.1_SCCK33112H6A\

C++
PS F:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF
λ .\build.bat -l .\amaziot_bloom_os_sdk\sample\3rd\1.1_SCCK33112H6A\
子目录或文件 out\bin 已经存在。
命令语法不正确。
子目录或文件 build\obj 已经存在。
gnumake: Entering directory `F:/3.asr-b/cat.1-asr1606/1.software/BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/3rd/1.1_SCCK33112H6A'
armcc.exe -c --cpu Cortex-R4 --no_unaligned_access -g -O2 --apcs /inter --diag_suppress 2084,1,2,177,188,223,550,1296,2795,6319,9931,9933 --diag_error=warning --gnu --thumb --loose_implicit_cast -DDATA_COLLECTOR_IMPL -DISPT_OVER_SSP -DDIAG_SSP_DOUBLE_BUFFER_USE_DYNAMIC_ALLOCATION -DENV_XSCALE -DL1_DCXO_ENABLED -DLTE_HIGH_MOBILITY_OPTIMIZATION -DRUN_XIP_MODE -DCRANE_Z2 -DCA_LONG_IPC_MSG -DNEZHA3 -DNEZHA3_1826 -DUPGRADE_PLMS -DUPGRADE_PLMS_SR -DLTE_GSMMULTIBCCH -DGPLC_LTE_RSSI_SCAN -DL1V_NEW_RSSI -DUPGRADE_PLMS_3G -DUPGRADE_PLMS_L1 -DUPGRADE_FG_PLMS -DFG_PLMS_URR -DUPGRADE_L1A_FG_PLMS -DUPGRADE_PLMS_STAGE_2 -DUPGRADE_MBCCH -DMULTI_BCCH_READY_IND -DURR_MRAT_ICS_SEARCH -DUPGRADE_ICS -DMRAT_NAS -DUPGRADE_PLMS_SEARCH_API -DICS_MBCCH -DICS_MBCCH_2G_RSSI -DDIAG_NEWPP -DPHS_SW_DEMO -DPHS_SW_DEMO_TTC -DPHS_SW_DEMO_TTC_PM -DFULL_SYSTEM -D_DDR_INIT_ -D_TAVOR_HARBELL_ -DUPGRADE_ARBEL_PLATFORM -D_TAVOR_B0_SILICON_ -DTDL1C_SPY_ENABLE -DDLM_TAVOR -DTAVOR -DFLAVOR_DUALCORE -DDEBUG_D2_MOR_REG_RESEREVED_ENABLE -D_DIAG_USE_COMMSTACK_ -D_TAVOR_DIAG_ -DPM_DEBUG_MODE_ENABLED -DPM_D2FULL_MODE -DPM_EXT_DBG_INT_ARR -DFEATURE_WB_AMR_PS -DMACRO_FOR_LWG -DHL_LWG -DOPTIMIZE_FOR_2G_BCCH -DPLAT_TEST -D_FDI_USE_OSA_ -DPLAT_USE_THREADX -DLWIP_IPNETBUF_SUPPORT -DCRANE_MCU_DONGLE -DAT_OVER_UART -DPHS_SW_DEMO_TTC_PM -DUPGRADE_LTE_ONLY -DEXT_AT_MODEM_SUPPORT -DLTEONLY_THIN_SINGLE_SIM -DLFS_FILE_SYS -DLFS_FILE_SYS_V2 -DPSM_ENABLE -DNO_PAHO_MQTT -DNO_XML -DNO_LWM2M -DREMOVE_MBEDTLS -DNO_AT_NET -DCRANE_SD_NOT_SUPPORT -DNTP -DYMODEM_EEH_DUMP -DENABLE_DM_LTEONLY -DLTEONLY_THIN -DNO_EXTEND_MY_Q_AT -DNOT_SUPPORT_HTTPS -DNOT_SUPPORT_PM813 -DCRANEL_4MRAM -DREMOVE_PB -DUART_NEW_VERSION -DREMOVE_MEP -DREMOVE_SMS -DREMOVE_ENVSIM -DAPN_INCODE -DLTEONLY_THIN_SINGLE_SIM_2MFLASH -DASR160X_OPENCPU_FEATURE -DENABLE_UART3_FEATRUE -DENABLE_UART4_FEATRUE -DYUGE_MBEDTLS_3_2_1 -DENABLE_MAC_TX_DATA_LOGGING -DDISABLE_NVRAM_ACCESS -DINTEL_UPGRADE_EE_HANDLER_SUPPORT -DLTE_W_PS -DL1_DUAL_MODE -DUPGRADE_HERMON_DUAL -DINTEL_UPGRADE_DUAL_RAT -DINTEL_UPGRADE_GPRS_CIPHER_FLUSH -DUPGRADE_ENHANCED_QUAD_BAND -DINTEL_2CHIP_PLAT -DI_2CHIP_PLAT -DUPGRDE_TAVOR_COMMUNICATION -DRUN_WIRELESS_MODEM -DFLAVOR_DDR12MB_GB1MB5 -DFEATURE_SHMEM -DACIPC_ENABLE_NEW_CALLBACK_MECHANISM -DRELIABLE_DATA -DMAP_NSS -DTV_FNAME="\"SW_PLATFORM=PMD2NONE PHS_SW_DEMO PHS_SW_DEMO_PM SRCNUCLEUS FULL_SYSTEM NOACRTC PDFLT PLAT_TEST PV2 DIAGOSHMEM NVM WITHL1V\"" -DTV_FDESC="\"SW_DESCRIPTION=\"" -DENABLE_ACIPC -D_DATAOMSL_ENABLED_ -DUSB_CABLE_DETECTION_VIA_PMIC -DMIPS_TEST -DMIPS_TEST_RAM -DFLAVOR_DIET_RAM -DNVM_INCLUDE -DMSL_INCLUDE -DMSL_POOL_MEM -DNO_AUDIO -DOSA_QUEUE_NAMES -D_DIAG_DISABLE_USB_ -DOSA_NUCLEUS -DOSA_USED -DPM_D2NONE_MODE -DCRANE_SOC_TEMPERATURE_SENSOR -DL1_SW_UPDATE_FOR_DIGRF -DPHS_L1_SW_UPDATE_R7 -DUPGRADE_LTE -DFRBD_CALIB_NVM -DFRBD_AGC_CALIB -DFRBD_FDT_CALIB -DHSPA_MPR -DCAPT_PARAMS_OPTIMIZE -DL1_WB_R99_ONLY -DL1V_WB_R99_ONLY -DINTERGRATED_RF_SUPPORT -DL1_RX_DIV_SUPPORT -DENABLE_OOS_HANDLING -DTAVOR_D2_WB_L1_SUPPORT -DL1_DDR_HIGH_FREQ -DUPGRADE_DIGRF3G_SUPPORT -DW_PS_PLUS_G_PAGING -D"NO_APLP=0" -DINTEL_UPGRADE_UNIFIED_VOICE_TASK -DINTEL_UPGRADE_R99 -DAPLP_SPY_ENABLE -D__TARGET_FEATURE_DOUBLEWORD -DWHOLE_UMTS_STACK -DUSE_TTPCOM_CSR_BLUETOOTH_AUDIO_GAIN_CONTROL -DL1_UPGRADE_R5 -DUPGRADE_EDGE -DUPGRADE_R4_FS1 -DINTEL_UPGRADE_GSM_CRL_IF -DUPGRADE_EGPRS_M -DINTEL_UPGRADE_EGPRS_M -DINTEL_UPGRADE_RF_PARAMS_IN_CF_TDS -DINTEL_UPGRADE_2SAMPLES_PER_SYMBOL -D"GPRS_MULTISLOT_CLASS=12" -D"EGPRS_MULTISLOT_CLASS=12" -DMARVELL_UPGRADE_BSIC_REDESIGN -DMSL_INCLUDE -DINTEL_HERMON_SAC -DCRANE_CUST_BUILD -DL1_SW_UPDATE_FOR_DIGRF -DFLAVOR_COM -DSILICON_PV2 -DSILICON_SEAGULL -DSILICON_TTC_CORE_SEAGULL -DPCAC_INCLUDE -Otime -DBUILD_DATE="\"06 21 2024\"" -DBUILD_TIME="\"10:56:09\"" -Iatcmds\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\telephony\yuge\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\UART\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\core\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\PMU\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\GPIO\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\os\posix\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\diag\diag_logic\src -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\csw\SysCfg\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\csw\platform\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\env\win32\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\csw\BSP\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\csw\platform\dev_plat\build -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\os\osa\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\os\threadx\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\os\nu_xscale\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\psm\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\httpclient\src -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\diag\diag_logic\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\timer\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\intc\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\csw\PM\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\pm\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\TickManager\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\BSP\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\telephony\atcmdsrv\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\telephony\atparser\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\telephony\sdk\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\httpclient\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\ci\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\lwipv4v6\src\include -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\lwipv4v6\src\include\arch -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\lwipv4v6\src\include\ipv4 -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\lwipv4v6\src\include\ipv6 -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\lwipv4v6\src\include\lwip -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\lwipv4v6\src\include\netif -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\mmi_mat\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\tavor\Arbel\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\tavor\env\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\telephony\modem\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\duster\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\fota\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\I2C\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\ACIPC\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\fatsys\flash -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\FDI\src\INCLUDE -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\MMU\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\FDI\src\FDI_ADD -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\FDI\src\FM_INC -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\fatsys\fs\hdr -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\littlefs\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\tts\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\dial\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\csw_memory\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\utilities\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\commpm\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\nvm\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\EEhandler\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\EEhandler\src -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\RTC\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\telephony\ci_client\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\BT_device\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\UART\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\mrd\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\dma\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\softutil\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\SPI\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\websocket\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\atnet_srv\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\softutil\fotacomm\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\aud_sw\Audio\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\aud_sw\ACM_COMM\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\aud_sw\audio_stub\src -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hop\aam\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\aud_sw\AudioHAL\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\hal\dbgshell\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\include\asr160x\pcac\opencpu\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\amaziot_bloom_os_sdk\utils -IF:/3.asr-b/cat.1-asr1606/1.software/BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/3rd/1.1_SCCK33112H6A\am\inc -IF:/3.asr-b/cat.1-asr1606/1.software/BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/3rd/1.1_SCCK33112H6A\atcmds\inc -IF:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\amaziot_bloom_os_sdk\3rd_drives\SCCK33112H6A -o build\obj/ext_at_cmds.o F:/3.asr-b/cat.1-asr1606/1.software/BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/3rd/1.1_SCCK33112H6A/atcmds/src/ext_at_cmds.c
armlink.exe build\obj/main.o build\obj/ext_at_cmds.o build\obj/ext_at_controller.o build\obj/drv_scck33112h6a.o \
-o F:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\out\bin\Arbel_PMD2NONE_40M.axf \
--via F:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\prebuilt_1606l\Arbel_PMD2NONE_targ_objliblist.txt \
--elf \
--scatter F:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\prebuilt_1606l\Crane_DS_4M_Ram_2M_Flash_XIP_CIPSRAM_Common_SingleSIM.sct \
--predefine="-DLTEONLY_THIN_SINGLE_SIM" --map --symbols --info sizes,totals \
--list F:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\out\bin\Arbel_PMD2NONE_40M.map \
--keep init.o(Header) --keep init.o(Vectors) --diag_suppress 6312,6314,6319,6329 \
--feedback F:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\out\feedbackLinkOptLteonlyThin_SingleSim_NoSMS.txt
F:\3.asr-b\cat.1-asr1606\1.software\BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF\tools\buildimage_1606l.bat
SDK_PROD_TYPE : [DM]
SDK_CUST_SKU : [THIN_SINGLE_SIM_NO_SMS]
SDK_PS_MODE : [LTEONLY]
SDK_CHIP_VER : [Z2A0]
SDK_OS_TYPE : [TX]
Platform Convertion Tools v4.01 with PS option extension
Convertion done!
|INPUT |out\bin\cp_1606L.bin
|MARK |NAME |EXEADDR .LOADADDR.LENGTH .CPZLADDR|COMPRESS STASTIC |
|--------|--------|--------.--------.--------.--------|------------------------------|
|This Is LteOnly 4M|
|RW_CPZ_1|DDR_RW_ |7e119000.80064ea8.0000ce04.80065000|0000ce04->00003000
|This Is LteOnly 4M|
|RW_CPZ_2|PS_NCAH |7e388000.80071cac.00001300.80068000|00001300->00001000
|This Is LteOnly 4M|
|RW_CPZ_3|ITCM |7e3dac00.80072fac.0000f51c.80069000|0000f51c->0000a000
|This Is LteOnly 4M|
|RW_CPZ_4|CODE_PS |7e1aa000.800824c8.0002fe38.80073000|0002fe38->0001e000
|This Is LteOnly 4M|
|RW_CPZ_5|CODEPSB |7e1dc000.800b2300.000339c0.80091000|000339c0->0001b000
|This Is LteOnly 4M|
|RW_CPZ_6|CODEPSC |7e213000.800e5cc0.000323ec.800ac000|000323ec->0001b000
|This Is LteOnly 4M|
|RW_CPZ_7|CODEPSD |7e249000.801180ac.00028d88.800c7000|00028d88->0001a000
|This Is LteOnly 4M|
|RW_CPZ_8|CODEPSE |7e277000.80140e34.0002e310.800e1000|0002e310->0001a000
|This Is LteOnly 4M|
|RW_CPZ_9|CODEPSF |7e2a9000.8016f144.0001c948.800fb000|0001c948->00011000
|This Is LteOnly 4M|
|RW_CPZ_A|CODE_PL |7e2ca000.8018ba8c.0002fa44.8010c000|0002fa44->0001e000
|This Is LteOnly 4M|
|RW_CPZ_B|CODEPLB |7e2fa000.801bb4d0.00039058.8012a000|00039058->00021000
|This Is LteOnly 4M|
|RW_CPZ_C|CODEPLC |7e337000.801f4528.000268d4.8014b000|000268d4->00011000
|--------|--------|--------.--------.--------.--------|------------------------------|
| | 0x00203dfc -> 0x00145000|
| | 2.015(MB) -> 1.270(MB)|
|------------------------------------------------------------------------------------|
cp_1606L.axf
cp_1606L.bin
cp_1606L.map
gnumake: Leaving directory `F:/3.asr-b/cat.1-asr1606/1.software/BlOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/3rd/1.1_SCCK33112H6A'
"copy NEZHAC_CP_CNR_MIFI_TX.bin to ./ "

已复制 1 个文件。

4.9 生成固件

参考入门中开发工具,生成工具。

4.10 测试

测试步骤:

  • 参考编译教程,和文档开头的编译指令,进行编译
  • 按照编译教程选择对应的选项
  • 烧录

4.11 固件

上电后,串口助手会打印出当前获取到的温度,以及芯片寄存器原始信息;


05

如何了解更多数字式温度传感器功能


本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki:Cellular IoT Wiki 知识库(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf) 

文章评论0条评论)

登录后参与讨论
我要评论
0
1
关闭 站长推荐上一条 /2 下一条