spi

iic与spi这两种通讯协议

ぃ、小莉子 提交于 2019-11-30 07:57:29
IIC vs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。IIC 开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互联微控制器和外围设备的。要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了 ‘Inter-Integrated Circuit’,IIC 或 IIC ,一种只使用二根线接连所有外围芯片的总线协议。最初的标准定义总线速度为100kbps。 经历几次修订,主要是1995年的400kbps,1998的3.4Mbps。有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上

聊聊Dubbo

三世轮回 提交于 2019-11-30 06:44:50
摘要: 在Dubbo的官网上,Dubbo描述自己是一个高性能的RPC框架。今天我想聊聊Dubbo的另一个很棒的特性, 就是它的可扩展性。 1. Dubbo的扩展机制 在Dubbo的官网上,Dubbo描述自己是一个高性能的RPC框架。今天我想聊聊Dubbo的另一个很棒的特性, 就是它的可扩展性。 如同罗马不是一天建成的,任何系统都一定是从小系统不断发展成为大系统的,想要从一开始就把系统设计的足够完善是不可能的,相反的,我们应该关注当下的需求,然后再不断地对系统进行迭代。在代码层面,要求我们适当的对关注点进行抽象和隔离,在软件不断添加功能和特性时,依然能保持良好的结构和可维护性,同时允许第三方开发者对其功能进行扩展。在某些时候,软件设计者对扩展性的追求甚至超过了性能。 在谈到软件设计时,可扩展性一直被谈起,那到底什么才是可扩展性,什么样的框架才算有良好的可扩展性呢?它必须要做到以下两点: 作为框架的维护者,在添加一个新功能时,只需要添加一些新代码,而不用大量的修改现有的代码,即符合开闭原则。 作为框架的使用者,在添加一个新功能时,不需要去修改框架的源码,在自己的工程中添加代码即可。 Dubbo很好的做到了上面两点。这要得益于Dubbo的微内核+插件的机制。接下来的章节中我们会慢慢揭开Dubbo扩展机制的神秘面纱。 2. 可扩展的几种解决方案 通常可扩展的实现有下面几种:

What are the disadvantages of bit banging SPI/I2C in embedded applications

拈花ヽ惹草 提交于 2019-11-30 05:34:50
问题 I have come to understand that bit banging is horrible practice when it comes to SPI/I2C over GPIO. Why so? 回答1: Bit-banging carries a software overhead consuming CPU cycles that you could otherwise utilise for other purposes. This may have a noticeable effect on system responsiveness to other events, and in a hard real-time system , may significantly impact the systems ability to meet real-time deadlines. If the bit-banged interface is not to have a detrimental effect on real-time

STM32软件-IAP远程固件升级

笑着哭i 提交于 2019-11-30 04:08:42
经常有项目要求固件远程更新,通过串口、GPRS、4G等等方式。下面介绍下STM32远程固件更新的方法。 IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作: 1)检查是否需要对第二部分代码进行更新 2)如果不需要更新则转到4) 3)执行更新操作 4)跳转到第二部分代码执行 第一部分代码必须通过其它手段,如JTAG或ISP烧入;第二部分代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新是再通过第一部分IAP代码更新。 对于STM32来说,因为它的中断向量表位于程序存储器的最低地址区,为了使第一部分代码能够正确地响应中断,通常会安排第一部分代码处于Flash的开始区域,而第二部分代码紧随其后。

SI522是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员

送分小仙女□ 提交于 2019-11-30 03:47:10
SI522(超低功耗13.56M芯片)替代RC522 完全兼容 PIN对PIN SI522是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员。 Si522 主要优势点: 1. 直接PIN2PIN 兼容RC522,与FM17550/FM17520/RM522 2. 完全替换RC522,接收功耗下降10mA,相比新增了自动寻卡和定时唤醒,自动寻卡功耗为4.5uA,业界最低。 3.首创全新寻卡方式,读卡模组不再死机。 SI522的概述 Si522 是一个高度集成的,工作在13.56MHz 的非接触式读写器芯片,阅读器支持ISO/IEC 14443 A/MIFARE。无需外围其他电路,Si522 的内部发送器可驱动读写器天线与ISO/IEC 14443A/MIFARE 卡和应答机通信。接收器模块提供一个强大和高效的电路来解调译码ISO/IEC 144443 A/MIFARE 兼容卡和应答机的信号。数字模块处理完整的ISO/IEC14443 A 帧和错误检测功能(奇偶和CRC)。 Si522 支持MIFARE 产品。Si522 支持非接触式通信,与MIFARE 系列双向通信速率高达848kBd。 Si522 内部集成低功耗自动寻卡与定时唤醒功能,可编程寻卡时间间隔,寻卡过程无需MCU 操作,寻卡成功中断唤醒或定时唤醒MCU

uboot移植spi驱动

六眼飞鱼酱① 提交于 2019-11-29 23:42:33
记录一下在uboot内移植spi驱动的过程 芯片:freescale Mpc8308 uboot版本:u-boot-2009.11-rc1.2 需求:我们需要在uboot下通过spi配置一个时钟芯片(dpll)用来给fpga提供时钟 要移植spi驱动,前提是要通过手册了解该cpu的spi的结构和寄存器描述,一般作为cpu的外围设备,spi是有一个spi控制器的 简单看一下8308的spi模块结构 spi的四根线,MOSI,MISO,CS,CLK CS以外的几根线是从Master上引出来的 而CS是由cpu的gpio来扮演的 驱动方面 uboot中产品的配置文件我的在include/configs/MPC8308EDD.h 这个是修改过的, 在u-boot-2009.11-rc1.2/driver/spi中找到mpc8xxx_spi.c文件,我们姑且认为这个就是最相近的驱动了(根据芯片名称与文件名称) 相关Makefile COBJS-$(CONFIG_MPC8XXX_SPI) += mpc8xxx_spi.o 在lib_ppc/board.c(不通uboot,目录不同)中有spi_init()的初始化调用,如下 #if defined(CONFIG_HARD_SPI) static int init_func_spi (void) { puts ("SPI: "); spi

为什么它有典型FaaS能力,却是非典型FaaS架构?

大憨熊 提交于 2019-11-29 20:55:11
阿里妹导读:FaaS—Function as a service,函数即服务。它是2014年由于亚马逊的AWS Lambda的兴起,而被大家广泛认知。FaaS能力是NBF中的一项非常重要的能力,NBF是一个非典型的FaaS架构,但是具备了典型的FaaS能力。文章将详细介绍NBF的FaaS容器架构、服务发布、服务路由和强大的Serverless能力以及NBF-FaaS在阿里大促期间的实践心得。 1.NBF NBF (New-Retail Business Framework) 是供应链中台基础技术团队研发的新零售服务开放框架,提供了标准化业务定义、快捷服务开发和生态开放的能力,旨在为生态伙伴提供一整套完整的新零售PaaS和SaaS的解决方案。 2.FaaS 2.1定义 FaaS是Serverless的一种典型形式,由 Serverless平台提供负载均衡、高可用、自动扩缩容、服务治理等最佳实践,将这些最佳实践对 Developer 透明化,进一步缩短 Developer 从想法到产品的时间,降低开发成本,同时保障 Developer 开发的服务的可靠性。通过事件驱动的方式,开发者的Function通过Event有效触发,比如 HTTP 请求、消息事件等。 2.2典型架构 Event Sources Function 事件驱动的集合; Function Instances

JAVA中SPI机制

你。 提交于 2019-11-29 20:49:02
之前研究dubbo的时候就很好奇,里面各种扩展机制,期间也看过很多关于SPI的机制,今日有缘再度看到有文章总结,故记录一下, 首先了解一下 JAVA中SPI简单的用法 可参考这篇文章, https://mp.weixin.qq.com/s/vpy5DJ-hhn0iOyp747oL5A 应用场景 SPI扩展机制应用场景有很多,比如Common-Logging,JDBC,Dubbo等等。 SPI流程: 有关组织和公式定义接口标准 第三方提供具体实现: 实现具体方法, 配置 META-INF/services/${interface_name} 文件 开发者使用 比如JDBC场景下: 首先在Java中定义了接口java.sql.Driver,并没有具体的实现,具体的实现都是由不同厂商提供。 在MySQL的jar包mysql-connector-java-6.0.6.jar中,可以找到META-INF/services目录,该目录下会有一个名字为java.sql.Driver的文件,文件内容是com.mysql.cj.jdbc.Driver,这里面的内容就是针对Java中定义的接口的实现。 同样在PostgreSQL的jar包PostgreSQL-42.0.0.jar中,也可以找到同样的配置文件,文件内容是org.postgresql.Driver

dubbo 的 spi 思想是什么?

妖精的绣舞 提交于 2019-11-29 20:44:43
面试题 dubbo 的 spi 思想是什么? 面试官心理分析 继续深入问呗,前面一些基础性的东西问完了,确定你应该都 ok,了解 dubbo 的一些基本东西,那么问个稍微难一点点的问题,就是 spi,先问问你 spi 是啥?然后问问你 dubbo 的 spi 是怎么实现的? 其实就是看看你对 dubbo 的掌握如何。 面试题剖析 spi 是啥? spi,简单来说,就是 service provider interface ,说白了是什么意思呢,比如你有个接口,现在这个接口有 3 个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要 spi 了,需要 根据指定的配置 或者是 默认的配置 ,去 找到对应的实现类 加载进来,然后用这个实现类的实例对象。 举个栗子。 你有一个接口 A。A1/A2/A3 分别是接口A的不同实现。你通过配置 接口 A = 实现 A2 ,那么在系统实际运行的时候,会加载你的配置,用实现 A2 实例化一个对象来提供服务。 spi 机制一般用在哪儿? 插件扩展的场景 ,比如说你开发了一个给别人使用的开源框架,如果你想让别人自己写个插件,插到你的开源框架里面,从而扩展某个功能,这个时候 spi 思想就用上了。 Java spi 思想的体现 spi 经典的思想体现,大家平时都在用,比如说 jdbc。 Java 定义了一套 jdbc 的接口,但是

dubbo源码分析系列——dubbo的SPI机制源码分析

倖福魔咒の 提交于 2019-11-29 16:12:33
dubbo的SPI机制 关于dubbo的SPI机制请参阅dubbo开发者文档 -> http://dubbo.io/Developer+Guide-zh.htm#DeveloperGuide-zh-%E6%89%A9%E5%B1%95%E7%82%B9%E5%8A%A0%E8%BD%BD 我只把我自己理解的SPI与大家分享一下: SPI是面向dubbo开发者角色的扩展接口,开发者可以通过它来扩展dubbo的功能和技术实现。相对而言API是面向dubbo使用者角色编程接口。 SPI解决的是扩展内容配置和动态加载的问题。在java中解决相同或者类似问题的技术有OSGI,JDK自带的SPI,以及IOC框架Spring也能够解决类似的问题,各种解决方案各有特点,我们不展开讲。而dubbo的SPI是从JDK标准的SPI(Service Provider Interface)扩展点发现机制加强而来,它做了如下改进:(这些内容引用自dubbo官方开发者手册) JDK标准的SPI会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。 如果扩展点加载失败,连扩展点的名称都拿不到了。比如:JDK标准的ScriptEngine,通过getName();获取脚本类型的名称,但如果RubyScriptEngine因为所依赖的jruby.jar不存在