嵌入式

手机需要将电池用光之后再充电吗?

…衆ロ難τιáo~ 提交于 2021-01-22 04:41:31
手机需要将电池用光之后再充电吗? 目前业界的电池标准技术是锂电子聚合物电池,这种电池的功率密度更高,说人话就是可以保证更高的电池使用时间,但是由于手机屏幕在更长更宽的路上没有终点,因此手机电量消耗依然很快。于是许多用户面临了这样的问题,手机是否可以随时连接电源?还是需要等待电量耗尽再充电? 实际上,锂电子的电池寿命是根据充电周期来决定的,以iPhone的电池为例,在完成500个充电盒放电周期后,电量会下降为原始电池容量的 80%。 而一个充电周期意味着用完电池的所有电量,但并不等同于充一次电。例如,你一天可以使用iPhone好几个小时,只用了一半的电量,然后又为它充满 电。如果你第二天还如此,这只能算作一个充电周期,而不是两个,因此,你可能要花去好几天才完成一个周期。当然,每完成一个充电周期,电池容量就会减少一 点,因此,电池最终会难以维持一天的使用时间,这个时候就意味着你该更换手机电池,或直接更换手机了。 至于对于移动设备电池的保养,除了关闭一些自己不需要的联网设置,我们建议你每个月至少一次将电池充满后再将其完全用尽。同时确保自己的设备不要因为保护套过紧,而导致设备过热,影响电池寿命。 来源: oschina 链接: https://my.oschina.net/u/118890/blog/182177

如何学习嵌入式?(网上汇总)

妖精的绣舞 提交于 2020-04-06 03:32:33
如何学习嵌入式?汇总了网上的一些帖子,最后部分给出了一些资源的下载链接 嵌入式菜鸟学习路线,2019, https://zhuanlan.zhihu.com/p/68227075 嵌入式小白到大神学习全攻略(学习路线+课程+学习书籍+练习项目) https://zhuanlan.zhihu.com/p/49950347 如何入门单片机/嵌入式 https://zhuanlan.zhihu.com/p/44771282 怎么自学嵌入式? https://www.zhihu.com/question/332475450 嵌入式技术学习路线 https://www.cnblogs.com/wxb20/p/5962148.html 如何学习嵌入式系统? https://www.zhihu.com/question/19688487 这个帖子有点老,不过一些推荐的经典书籍没有过时 评论中有一句话: 如果是学计算机的,那么学嵌入式不会有门槛。 如果不是学计算机的,那么忘了嵌入式,先学习计算机。 说得很在理! stm32学习视频(资料)推荐,2018, http://blog.sina.com.cn/s/blog_14f6592880102ya44.html 如何学习嵌入式软件?一位嵌入式学员的心得 https://zhuanlan.zhihu.com/p/70448337

飞凌嵌入式丨我们是如何解决TVS管使用错误的

六眼飞鱼酱① 提交于 2020-04-05 22:40:30
背景 一位客户在我司购买的某核心板,自己设计的底板。但在设计好底板后,发现不能通过USB更新程序,用SD卡可以正常程序烧写。出现此问题后,客户将底板快递至飞凌嵌入式申请技术服务,经过工程师反复测试后,发现确实存在此问题。 在寻找问题原因的过程中,发现是客户原理图中的TVS管使用错误导致问题出现。下图为客户设计原理图: 跟客户沟通GND_ETH连接的机壳,打静电过程中干扰信号可以通过TVS泄放到GND_ETH。 TVS二极管反应速度快,钳位电压精确,结电容低,较大电容的保护器件可导致数据信号波形恶化甚至出现位错误。 RClamp0502B此TVS管是为了保护高速数据和传输线上的敏感元件,在工作环境中免受ESD(静电放电)、CDE(电缆放电事件)和EFT(电气快速瞬态)引起的过电压而设计的。 对于TVS管必须从USB信号线连接到GND,而GND_ETH通过TVS管对数据传输进行干扰造成不能正常的烧写程序。查看《RClamp0502B数据手册》,数据手册中明确写出引脚1和引脚2连接数据线,实现对两条线路的保护,引脚3与地面(即GND)直接相连。 ▼ 如下图所示: 芯片参考手册给出来的参看电路的引脚3直接接到GND上面。 ▼ 如下图所示: 通过飞凌工程师们对线路整改,将TVS管的引脚3接到GND上面,能够实现USB数据线烧写程序,问题解决。 整改后的原理图如下图所示: 来源: 51CTO

飞凌嵌入式 S5P4418 核心板为自助加油系统“加油”

北慕城南 提交于 2020-04-02 21:24:42
五一小长假即将到来,对于已经工作上班的人来说,这段时间休息一下,放松一下真的是非常让人开心的!往年五一假期为三天,很多人都选择在家呆着,不过今年我们迎来了令人振奋的消息,今年五一将放四天假! 幸福来得太突然, 不占用双休的劳动节简直清流。 为了 合理利用来自不易的“良心假”, 很多人选择自驾方式出游。多数车主会提前排队加油,加油站将会出现排长队现象。 随着近几年信息技术的不断发展,智能化的概念逐渐***到各行各业以及我们的生活里,智能化、自助设备随处可见。 自助加油机,应运而生。 节省时间、来去潇洒自如、免去排队百脸茫然、一脸懵圈的痛苦过程…… 中石油工作人员介绍,自助加油在国外非常流行,主要就是方便快捷,节约了找工作人员、交钱的时间,核算下来平常能节约两分钟,高峰时期10分钟都不止。而对于加油站来说,自助加油可以显著减少人工成本。 加油站,这种街边最常见基础设施,成了又一争抢的高地。 前有中石油与阿里达成战略合作协议,将在全国开展10万家无人加油站,可见无人已经由概念转为落地,未来在很多场景将会成为主流。 后有京东集团和中国石化销售有 限公司也正式签署战略合作协议,双方宣布将联手打造3万家智能加油站。中国石化利用京东的智慧门店科技和智慧供应链,升级自己的线下网点;京东可借此进一步扩展线下版图。 从商品供应链支持、无人便利店推广,再到刷脸支付以及云计算技术的应用

嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef

女生的网名这么多〃 提交于 2020-03-31 13:16:08
const:变量,只读【不能变】 内存属性: 1. 内存操作的大小 2.内存的变化性,可写可读 char *p; const char *p; 描述字符串,p指向的内容是只读的,不可再次修改 char const *p; char * const p; 硬件资源的定义 char *p const; const char *const p; 举个例子: 虽然在定义指针p的过程中,前面没有写const,但是默认了他是只读属性,不能对访问内容修改 这个segmentation fault就是非法访问报错的! 正确写法: 2. volatile 主要应用于硬件中 防止优化指向内存地址 char *p; volatile char *p; 3. typedef 别名 什么类型 变量名称; xxx a; char *name_t; // name_t 是一个指针,指向了一个char类型的内存 typedef char * name_t; //name_t是一个指针类型的名称,指向了一个char类型的内存 来源: https://www.cnblogs.com/ivyharding/p/11146915.html

基于PSRAM技术的IoT ram存储器解决方案

≯℡__Kan透↙ 提交于 2020-03-27 19:15:07
迅速发展的IoT继续为消费者和行业带来革命性的变化,并增强了他们的日常使用体验,尤其是在边缘增加处理能力的需求下。健身追踪器和智能扬声器,农业及工厂机器都是这样的例子。特定的应用程序都规定了内存要求。丰富的嵌入式物联网体验推动了对更多外部板载内存的需求。 在这些应用程序中添加AI/ML进一步改变了内存需求,通常需要更多和更高带宽的内存。物联网应用程序需要保持受约束的物理外形尺寸,功率散热范围以及较低的BOM成本,这增加了其他设计约束。对于这些应用程序来说,理想的候选内存应该是什么问题,现在已经成为许多产品团队的首要任务,提出并研究了新的存储器类型。基于PSRAM技术的AP存储器IoT ram 存储器解决方案已与IoT /嵌入式设备中普遍使用的许多现有MCU/SoC/FPGA无缝协作,解决了对额外外部存储器的需求,同时使设计人员更容易遵守其外部存储器产品设计约束。 图1需要更多内存的IoT /嵌入式应用程序 嵌入式/外部SRAM和DRAM解决方案的时间已不多了 SRAM仍然是最接近处理器的高速访问存储器,具有最高的速度和最低的延迟。然而SRAM具有几个缺点。常规的6T SRAM布局拓扑无法与过程节点的缩小相对应地扩展。当由于对更丰富的IoT应用程序的需求而对更多内存的需求不断增加时,这同时发生。嵌入式 SRAM 产生的泄漏功率会随着CPU功耗的使用而不断增加。对于功耗优化的情况

基于PSRAM技术的IoT ram存储器解决方案

耗尽温柔 提交于 2020-03-26 12:02:49
3 月,跳不动了?>>> 迅速发展的IoT继续为消费者和行业带来革命性的变化,并增强了他们的日常使用体验,尤其是在边缘增加处理能力的需求下。健身追踪器和智能扬声器,农业及工厂机器都是这样的例子。特定的应用程序都规定了内存要求。丰富的嵌入式物联网体验推动了对更多外部板载内存的需求。 在这些应用程序中添加AI/ML进一步改变了内存需求,通常需要更多和更高带宽的内存。物联网应用程序需要保持受约束的物理外形尺寸,功率散热范围以及较低的BOM成本,这增加了其他设计约束。对于这些应用程序来说,理想的候选内存应该是什么问题,现在已经成为许多产品团队的首要任务,提出并研究了新的存储器类型。基于 PSRAM 技术的AP存储器IoT ram 存储器解决方案已与IoT /嵌入式设备中普遍使用的许多现有MCU/SoC/FPGA无缝协作,解决了对额外外部存储器的需求,同时使设计人员更容易遵守其外部存储器产品设计约束。 图1需要更多内存的IoT /嵌入式应用程序 嵌入式/外部SRAM和DRAM解决方案的时间已不多了 SRAM 仍然是最接近处理器的高速访问存储器,具有最高的速度和最低的延迟。然而SRAM具有几个缺点。常规的6T SRAM布局拓扑无法与过程节点的缩小相对应地扩展。当由于对更丰富的IoT应用程序的需求而对更多内存的需求不断增加时,这同时发生

初识Android下的busybox与toolbox

♀尐吖头ヾ 提交于 2020-03-25 23:37:29
2020-03-25 关键字: 原来 Android 中的 busybox 与 toolbox 是两套程序。 busybox 是一个嵌入式领域常用的软件。它是一个命令集工具,像传统的PC端的Linux系统上的大多数命令的实现都被封装在 busybox 程序中。在嵌入式平台上就可以将这些命令以参数的形式传递给 busybox 工具集,进而实现相应的功能。 那为什么嵌入式平台不能直接像PC端那样,直接将各个命令所对应的程序预置在板端,而非要包装在一个 busybox 中呢?其最主要的原因还是因为这些命令所对应的程序加起来太过庞大,嵌入式平台的存储资源通常是比较有限的,为了节约存储空间,就将这些命令集合在一个程序中。那集合以后的程序又凭什么能比PC端那种分散开来的形式体积要小呢?一个主要的原因是因为这些命令中,有不少命令的实现都是相同的。busybox 就将这些相同的部分提取出来让多个命令共用。如此一来随着命令数量的增多,就能比较大程度地缩减程序体积了。 Android平台是基于嵌入式Linux的。通过串口或者 adb shell 可以像在嵌入式Linux平台上那样敲击命令以实现某些目的。 Android平台的命令系统一般而言可以认为分为两类: 1、busybox 实现的命令系统 2、toolbox 实现的命令系统 toolbox 命令系统是Android平台默认的命令系统。 例如

ubuntu-10.10系统中samba服务的安装

ぃ、小莉子 提交于 2020-03-19 12:52:11
3 月,跳不动了?>>> 1、安装samba: sudo apt-get install samba sudo apt-get install smbfs 2、创建共享目录: sudo mkdir /home/linux/samba sudo chmod 777 /home/linux/samba 3、修改Samba配置文件: sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak //养成好习惯做好原始文件的备份 sudo vim /etc/samba/smb.conf    在smb.conf最后添加    [samba]    path = /home/linux/samba    available = yes    browsealbe = yes    public = yes    writable = yes 4、创建Samba帐户: sudo touch /etc/samba/ /etc/samba/ smbpasswd sudo smbpasswd -a linux    然后会要求你输入samba帐户的密码 提示:如果没有第四步,当你登录时会提示 session setup failed: NT_STATUS_LOGON_FAILURE] 5、重启Ubuntu Samba服务器: sudo /etc/init.d

蓝桥杯嵌入式第十届省赛程序

最后都变了- 提交于 2020-03-11 14:00:34
第十届赛题程序部分较为简单,客观题相对较难。主要会用adc+led即可ok,本科组甚至没有用到EEPROM(本代码加入此功能将led灯信息,上下阈值存入EEPROM,reset后数据不丢失) 先看目录 初始化函数 头文件: 初始化程序 #include "stm32f10x.h" #include "lcd.h" #include "init.h" #include "i2c.h" void GPIO_Int(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC| RCC_APB2Periph_GPIOD, ENABLE); //led GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10| GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin