LM401ADC采集代码解读

Posted 嵌入式电子信息爱好者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LM401ADC采集代码解读相关的知识,希望对你有一定的参考价值。

本文主要实现基于LM401模组,,测试ADC低功耗采集,详细解析代码基于计算方式

对于小白理解ADC有更详细的理解

【LM401】ADC采集代码解读

硬件基于易智联的LM401的LoRa模组,用的 LM401-pro-kit开发板,开发板资料以及参考资料如下:

基于STM32WL的LM401 Lora评估板

【STM32WLE5之lora:5、易智联LM40评估板ADC定时采集上报】

1. 单片机ADC与DAC简单理解

  • ADC:模数转换,单片机的IO口接一个传感器,传感器输出模拟值,单片机读取模拟量转化为数字量。( 单片机输入模拟值,转化为数字值

  • DAC:数模转换,给单片机数字值,从单片机的IO口输出模拟信号量。( 单片机IO口输出模拟信号量

2. 模组ADC通道介绍

12位DAC、2Msps 低功耗采样保持电路 ,12通道,采用 16-bit 硬件过采样,转化范围1.62—3.6V,给出部分引脚,具体查看手册

PB1 — ADC_IN5 PB2 — ADC_IN4

PB3 — ADC_IN2 PB4 — ADC_IN3

PB13 — ADC_IN0 PB14 — ADC_IN1

其中三个通道说明:

#define ADC_CHANNEL_VREFINT                (LL_ADC_CHANNEL_VREFINT)         // 内部参考电压
#define ADC_CHANNEL_TEMPSENSOR             (LL_ADC_CHANNEL_TEMPSENSOR)      // MCU 内部温度,精确度不高 1度左右
#define ADC_CHANNEL_VBAT                   (LL_ADC_CHANNEL_VBAT)            // 外部连接电压值

3. ADC初始化

void MX_ADC_Init(void)

  /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
  */
  hadc.Instance = ADC;
  hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;  // 时钟分频数
  hadc.Init.Resolution = ADC_RESOLUTION_12B;    // 分辨率为 12bit
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;    // 一般选择右对齐
  hadc.Init.ScanConvMode = ADC_SCAN_DISABLE;   // 单通道(单次)或者多通道(扫描)模式选择,扫描的话就是序列的形式
  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;  // 单一转换结束

  hadc.Init.LowPowerAutoWait = DISABLE;     // 低功耗
  hadc.Init.LowPowerAutoPowerOff = DISABLE;
  hadc.Init.ContinuousConvMode = DISABLE;
  hadc.Init.NbrOfConversion = 1;
  hadc.Init.DiscontinuousConvMode = DISABLE;
  hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc.Init.DMAContinuousRequests = DISABLE;      // 不使用 DMA
  hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED;
  hadc.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_160CYCLES_5;
  hadc.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_160CYCLES_5;

  hadc.Init.OversamplingMode = ENABLE; //使能过采样
  hadc.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_16; // ,16倍过采样
  hadc.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
  hadc.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
  hadc.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH;

  if (HAL_ADC_Init(&hadc) != HAL_OK)
  
    Error_Handler();
  
  /* USER CODE BEGIN ADC_Init 2 */

  /* USER CODE END ADC_Init 2 */


4. 采集值的计算

比如,demo中通过PA11引脚读取ADC的值,读取后的计算方式:

注意::计算时用的12位分辨率,和ADC初始化设置的分辨率要对应

bat_v = SYS_GetBatteryLevel();	// 获取内部参考电压
	   -> ADC_ReadChannels(ADC_CHANNEL_VREFINT);  
temp = GetADC_PA11();
pa11_v = __LL_ADC_CALC_DATA_TO_VOLTAGE(bat_v, temp,ADC_RESOLUTION_12B); // 将PA11的ADC转换成电压,单位mV  通过这个函数计算出实际电压值,单位是 mV


/// @brief   将采集到的模拟电压值转换为实际电压值,计算结果单位是 mV
/// @param   参数1:ADC转换环境的参考电压值  
///			 参数2:采集到的模拟电压值   
///			 参数3:AD芯片分辨率(本系列可可以是6 8 10 12)
#define __HAL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\\
                                       __ADC_DATA__,\\
                                       __ADC_RESOLUTION__) \\
__LL_ADC_CALC_DATA_TO_VOLTAGE((__VREFANALOG_VOLTAGE__),\\
                              (__ADC_DATA__),\\
                              (__ADC_RESOLUTION__))

( V R E F / 2 n ) ∗ A d c D a t a (VREF/2^n)*AdcData (VREF/2n)AdcData

5.测试结果

测试 PB4PB3 两路ADC,分别将PB3直接接地,PB43.3v,测试过程代码
说明:本例 参考电压为 3.3v 用的12位ADC

#define VREF_MV         (3300UL)
#define ADC_MAX_RESULT  ((1 << 12)-1) // 12 bit ADC

uint16_t batteryLevel = SYS_GetBatteryLevel();  // 获取系统的参考电压  单位 mv(3300mv)
APP_PRINTF("batteryLevel= %d \\r\\n",batteryLevel);

  uint16_t ADC_PB3_Value = GetADC_PB3_Value();
  uint16_t ADC_PB4_Value = GetADC_PB4_Value();

  APP_PRINTF("ADC_PB3_Value= %d \\r\\n", ADC_PB3_Value);
  APP_PRINTF("ADC_PB4_Value= %d \\r\\n ",ADC_PB4_Value);
  
  APP_PRINTF("*********************************** \\r\\n ");

  APP_PRINTF("ADC_PB3_Value= %d \\r\\n",(ADC_PB3_Value * VREF_MV) / ADC_MAX_RESULT);
  APP_PRINTF("ADC_PB4_Value= %d \\r\\n ",(ADC_PB4_Value * VREF_MV) / ADC_MAX_RESULT);

打印信息如下:

解读丨网络爬虫技术是洪水猛兽吗?

网络爬虫技术是洪水猛兽吗?

——浅谈网络爬虫技术采集信息所涉相关法律问题

解读丨网络爬虫技术是洪水猛兽吗?

李丽霞(天达共和律师事务所)


前段时间有新闻显示几家大数据企业或因违规收集用户信息被调查,爬虫技术/爬虫业务的合规性引发热议。本文作者认为,网络爬虫技术作为一种采集数据/信息的技术本身不存在违法性,但如果突破法律法规设置的边界采集、使用信息,则存在合规风险。因此,在利用网络爬虫技术采集信息的同时,应力求达到与此相关的合规要求、减少合规风险。本文从通过网络爬虫技术采集、使用信息角度,尝试探讨相关数据/个人信息合规法律问题。


解读丨网络爬虫技术是洪水猛兽吗?

一、 本文所涉基本概念



解读丨网络爬虫技术是洪水猛兽吗?

二、 通过网络爬虫技术采集、使用信息可能面临的法律风险


1. 网络爬虫技术是否侵入计算机信息系统所涉风险问题

网络爬虫技术爬取信息时,如果使用技术手段破坏、突破或绕过其他计算机信息系统的安全保护措施,未经权利人授权或者超越授权范围,非法侵入[v]他人的计算机信息系统,可能会触发法律风险,造成严重后果或情节严重的,涉嫌构成刑事犯罪。

(1)违反国家规定,侵入国家事务、国防建设、尖端科学技术领域计算机信息系统的,构成非法侵入计算机信息系统罪。

(2018)川3424刑初169号刑事判决书显示,有被告人利用爬虫软件登录公安机关交通管理部门“交通安全服务管理平台”,大量爬取全国各地及四川凉山州公安局交警支队车管所公告的车牌放号信息,之后使用技术手段,突破“交通安全服务管理平台”系统安全保护措施,将爬取的车牌号提交至该管理平台的车辆报废查询系统,进行对比,并根据反馈情况自动记录未注册车牌号,建立全国未注册车牌号数据库,出售数据库查阅权限。有关被告人因侵入国家事务领域的计算机信息系统,被认定触犯非法侵入计算机信息系统罪,被判处有期徒刑。[vi]尽管该案判决书未明确爬取国家事务领域的计算机信息系统数据是否属于构成该罪的事实行为,但亦有警示意义:如果网络爬虫技术突破国家事务领域计算机信息系统防护侵入该系统,可能有这方面的刑事责任风险。

(2)违反国家规定,侵入国家事务、国防建设、尖端科学技术领域以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,情节严重的,构成非法获取计算机信息系统数据罪。

目前,存在大量构成非法获取计算机信息系统数据罪案例,其中包括被告利用爬虫技术抓取被害单位服务器中存储的数据,涉及使用防抓取措施绕过服务器的身份校验实施数据抓取行为,造成被害单位损失,被处以刑罚的案件。

(3)违反国家规定,如果通过网络爬虫技术侵入他人的计算机信息系统,或者对进入的计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,或对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加,后果严重的,根据《中华人民共和国刑法》第二百八十六条,构成破坏计算机信息系统罪。《最高人民法院、最高人民检察院关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》明确了哪些情形构成“后果严重”,例如:造成十台以上计算机信息系统的主要软件或者硬件不能正常运行,或对二十台以上计算机信息系统中存储、处理或者传输的数据进行删除、修改、增加操作,或违法所得五千元以上或者造成经济损失一万元以上等情形均构成“后果严重”。

2. 网络爬虫技术采集信息的种类所涉风险

取决于通过网络爬虫技术采集的是什么信息,采集信息这个行为本身存在合规风险。

(1)通过网络爬虫技术,非法获得相关国家秘密的,涉嫌构成非法获取国家秘密罪。国家秘密系指关系国家安全和利益,依照法定程序确定,在一定时间内只限一定范围的人员知悉的事项。

(2)未经被收集个人信息的个人信息主体明确同意,通过网络爬虫技术采集个人信息,违反了网络安全法等法律法规关于个人信息保护的规定。

网络安全法等法律规范确立了个人信息保护的基本原则,即:个人信息的收集应坚持合法、正当、必要原则,明示收集、使用信息的目的、方式和范围,并取得被收集者的同意。根据网络安全法第六十四条,窃取或者以其他非法方式获取个人信息,尚不构成犯罪的,将面临被没收违法所得,支付违法所得一倍以上十倍以下罚款或没有违法所得的,支付一百万元以下罚款的责任。

非法获取个人信息,情节严重的,涉嫌构成侵犯公民个人信息罪。根据《中华人民共和国刑法》第二百五十三条及《最高人民法院、最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》的规定,窃取或者以其他方法非法获取公民个人信息的,非法获取行踪轨迹信息、通信内容、征信信息、财产信息五十条以上的,非法获取住宿信息、通信记录、健康生理信息、交易信息等其他可能影响人身、财产安全的公民个人信息五百条以上的,或非法获取以上信息之外的公民个人信息五千条以上的,属于“情节严重”情形。

(3)未获得个人征信业务牌照,通过网络爬虫技术(或其他方式)采集个人征信信息(即个人信用信息),违反了《征信业管理条例》。按照该条例,擅自设立经营个人征信业务的征信机构或者从事个人征信业务活动的,由国务院征信业监督管理部门予以取缔,没收违法所得,并处5万元以上50万元以下的罚款;构成犯罪的,依法追究刑事责任[vii]。

(4)如果通过网络爬虫技术爬取的信息属于商业秘密,根据《中华人民共和国反不正当竞争法》第九条,通过电子侵入或者其他不正当手段获取权利人的商业秘密的,构成侵犯商业秘密。

3. 通过网络爬虫技术采集信息后是否使用及其使用方式所涉风险

(1)未经合法授权获取个人信息后进行使用的,很显然,违反了网络安全法。如果将个人信息非法提供给他人,根据网络安全法第六十四条,窃取或者以其他非法方式获取、非法出售或者非法向他人提供个人信息,尚不构成犯罪的,由公安机关没收违法所得,并处违法所得一倍以上十倍以下罚款,没有违法所得的,处一百万元以下罚款。达到侵犯个人信息罪的犯罪构成要件的,还会受到刑事处罚[viii]。

(2)未经权利人授权,爬取权利主体的其他信息(可能包括商业秘密、知识产权如视频、音频作品,也可能涉及商业秘密、知识产权或个人信息之外的其他信息)后予以使用,也可能构成侵权。爬取到他人的商业秘密予以使用,属于侵权自不待言。爬取并使用其他网站公开的信息,如他人视频、音频等信息,也很可能构成侵权。即,网络上公开的信息,并非爬取后就顺理成章成为数据提取方的“财产”或可以“为我所用”,否则有被认定为构成侵权的风险。

深圳市中级人民法院的(2017)粤03民初822号案件,最高人民法院公布的2018年中国法院50件典型知识产权案例之一,涉及加工整理而成的“大数据”的权利问题,意义深远。原告谷米公司和被告元光公司分别研发了自己的APP软件,二者均向用户提供实时公交地理位置查询等服务。元光公司利用网络爬虫技术从谷米公司服务器中爬取了大量公交车行驶实时数据,用于其开发的智能公交APP“车来了”,法院认定二者存在竞争关系,元光公司构成不正当竞争。他人的“大数据”成果,如果具备独创性要求,权利人可以向通过爬虫技术提取并使用数据的主体主张知识产权侵权,即便该等“大数据”成果不具备独创性,作为投入了成本依法获取的“大数据”也具备无形财产属性,具备商业价值,权利人可从反不正当竞争法角度寻求保护。[ix]

解读丨网络爬虫技术是洪水猛兽吗?

三、 大数据企业如何降低数据合规风险


1. 大数据企业采集数据,理论上似乎包括三种途径:一是从自身业务中获取海量数据/信息;二是通过某种安排(如合作、协议购买)从其他拥有海量数据的主体获取数据/信息;三是自行通过网络爬虫技术等工具/技术手段采集网络上的数据/信息。无论以哪种方式获取,可尝试从以下几个方面减少合规风险:

(a) 从自身业务经营数据中获取海量个人信息的,(i)应当按照网络安全法的规定及有关个人信息保护的规定,遵循合法、正当、必要的原则,向个人信息主体明示收集、使用信息的目的、方式和范围,并经被收集者同意。(ii)按照法律规定仅收集与所提供服务相关的个人信息,不过度收集个人信息;(iii)如后续使用个人信息的目的、方式和范围发生变化,应再次取得个人信息主体就更改后的目的、方式和范围予以同意。(iv)向他人提供个人信息的,应取得个人信息主体的同意,且尽量提供经过处理无法识别特定个人且无法复原的信息。(v)需要委托他人为本企业提供数据处理服务的,确保他人具备维护数据安全的制度和技术能力,委托合同中确定好双方关于数据合规的权利义务。

(b) 大数据企业(也包括大数据企业以外的数据需求主体)从其他拥有海量数据的主体获取数据,如果明知数据提供方不享有存储、使用或转移个人信息的权利,仍然获取该等信息,可能构成非法获取公民个人信息,情节严重的,构成侵犯公民个人信息罪。有鉴于此,(i)如可行,建议数据需求方事先尽合理努力评估/核实数据提供方是否拥有存储、转移该等数据的权利,其是否有权将该等数据提供给数据需求方供其使用,且数据需求方获得并使用该等数据的目的、范围和方式未超越数据提供方取得数据之初获得的个人信息主体的授权,如有超越授权则已取得个人信息主体的同意。(ii)在与数据提供方的业务合同中,建议加入数据提供方就已履行数据合规义务的承诺与保证条款,并设置违反此等承诺与保证条款导致数据需求方损失的赔偿条款。(iii)数据需求方尽量从其他数据主体处获取已经脱敏、不可识别特定自然人的、不可复原的信息。

(c) 通过网络爬虫技术自行采集、存储和分析数据的,(i)设计网络爬虫程序及设置爬取数据目标前,确保爬虫程序不突破或绕过他人计算机信息系统的防护措施,避免未经合法授权或者超越授权,侵入他人计算机信息系统;(ii)明知某些计算机信息系统存储的信息属于涉及到国家机密、商业秘密、个人隐私或其他个人信息的,即便该特定计算机信息系统可能存在系统漏洞、缺少或没有系统防护措施,也应避免从这些计算机信息系统提取信息;(iii)进行数据分析及后续使用时,评估网络爬虫技术爬取到的数据是否含有未经授权获取的个人信息、他人的知识产权或其他(财产)权利、等,如涉及且无权限进行进一步处理或使用,则予以删除,不存储、不使用。

2. 此外,拥有海量数据的大数据企业,应严格按照网络安全法的要求,履行网络安全等级保护义务,保障网络免受干扰、破坏或者未经授权的访问,防止网络数据泄露或被窃取、篡改。采取主要包括制定内部安全管理制度和操作规程、确定网络安全责任人,采取防范网络攻击、网络侵入的技术措施,采取数据分类、重要数据备份及加密等在内的安全防护措施。[x]否则,违反该等义务,可能根据网络安全法受到行政处罚,取决于拥有海量数据的大数据企业与其他主体的约定,其还可能承担违约责任,也不排除向受害主体承担(部分)侵权责任的可能性。

3. 最后,保持关注网络安全和数据/个人信息合规方面的法律、法规、规章等规范的更新。开展业务前,评估业务合规性,必要时由公司法务、外部律师介入,分析防范风险和调整实施策略,确保合规运营。

注释:

[i]https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/5162711?fr=aladdin,浏览于2019年9月19日。
[ii]https://baike.baidu.com/item/%E4%BF%A1%E6%81%AF/111163?fr=aladdin,浏览于2019年9月20日。
[iii]《中华人民共和国网络安全法》第七十六条、《最高人民法院、最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》第一条。
[iv] 由公安部、北京市网络行业协会发布的《互联网个人信息安全保护指南》第3.1条。
[v] 关于非法侵入,《最高人民法院、最高人民检察院关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》关于刑法第二百八十五条第三款规定的“专门用于侵入、非法控制计算机信息系统的程序、工具”含义,是指具有避开或者突破计算机信息系统安全保护措施,未经授权或者超越授权,获取计算机信息系统数据或实施程序控制功能的,以及其他专门设计用于侵入、非法控制计算机信息系统、非法获取计算机信息系统数据的程序、工具,这对判断哪些情形构成非法侵入计算机信息系统有重要借鉴意义。
[vi]http://wenshu.court.gov.cn/website/wenshu/181107ANFZ0BXSK4/index.html?docId=8ec7edb0df5c4c9ca051aa950164e45e,浏览于2019年9月24日。
[vii]《征信业管理条例》第三十六条。
[viii] 根据《最高人民法院、最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》第三条,未经被收集者同意,将合法收集的公民个人信息向他人提供的,属于刑法规定的侵犯公民个人信息罪所指的“提供公民个人信息”。
[ix] http://rmfyb.chinacourt.org/paper/html/2019-05/23/content_155662.htm?div=-1,浏览于2019年9月25日。
[x]《中华人民共和国网络安全法》第二十一条。


作者简介

解读丨网络爬虫技术是洪水猛兽吗?




  


  李丽霞

  天达共和律师事务所

执业领域:公司业务、劳动法、争议解决

李丽霞律师毕业于武汉大学,此前曾任职于Eversheds、Clyde & Co等外资律师事务所及上海大邦律师事务所,主要从事公司法、收购与兼并、劳动合规及争议解决业务。李律师曾为大量国内外企业,包括外国企业、跨国公司,提供包括外商投资、公司治理、企业合并与分立、股权转让、企业日常运营、劳动及合规、重大商业合同审核与谈判、争议解决、外资退出中国在内的全方位法律服务;其亦曾办理中国企业境外直接投资项目。近年来,李律师还就数据合规和个人隐私保护法律事务进行研究,并为企业提供数据合规相关法律服务。

威科先行® • 法律信息库是荷兰威科集团(WoltersKluwer)为中国专业人士量身定制的在线法律信息库产品。该产品整合了威科全球与中国相关的中英文法律题材内容,搭载领先的智能信息技术平台,是集法律法规、案例、实务指南、国际条约于一体,高效检索、及时更新的法律信息解决方案。

扫描二维码 申请试用威科先行法律信息库

点击下面 阅读原文

以上是关于LM401ADC采集代码解读的主要内容,如果未能解决你的问题,请参考以下文章

STM32F103+CubeMX+ADC采集直流

51单片机 LM35多路温度采集+ADC0832+DS18B20环境报警监测+Proteus仿真

STM8的ADC连续采集问题

STM32 ADC详解

STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx

小技巧:虚拟数据 方便数学实验。基于stm32dsp