i2c协议

由飞利浦公司开发,支持设备间的短距离通信。i2c通信需要的引脚少,硬件实现简单、可扩展性强,被广泛应用在系统内多个集成电路(IC)间的通信。

i2c物理层

  • i2c通信总线可连接多个i2c通信设备,支持多个通信主机和多个通信从机。i2c通信只需要两条双向总线——SDA(串行数据线)和SCL(串行时钟线)。
    SDA:用于传输数据
    SCL:用于同步数据收发

  • 每个连接到总线的设备都有一个独立地址,共7bit,主机正是利用该地址对设备进行访问

  • i2c支持多主控,任何时间点都只能有一个主控。

  • i2c器件的SDA引脚和SCL引脚是开漏电路形式,因此,SDA和SCL总线都需要连接上拉电阻,当总线空闲时,两条总线均为高电平。

  • 各器件的SDA和SCL信号线在总线上都是线与关系。(即连接到总线上的任意器件输出低电平都会将总线信号拉低)

阅读全文 »

序言

在日常生活中,我们通常会将一个大的问题拆分细化,拆开成若干个小问题,通过逐个解决小问题,大问题也就解决了。
同样的在RT-Thread多线程操作系统中,开发人员基于这种分而治之的思想,将一个复杂的应用问题抽象成若干个小的、可调度的、可序列化的程序单元。当合理地划分任务并正确地执行时,这种设计能够让系统满足实时系统的性能及时间的要求。

下面看一个例子:我们的任务是读取传感器上的数据,并将相关数据显示出来。通过拆分结构,我们可以发现主要有两个任务:

1.读取数据
2.显示数据

简单来说,就是一个子任务不间断地读取传感器数据,并将数据写到共享内存中,另外一个子任务周期性的从共享内存中读取数据,并将传感器数据输出到显示屏上。

在RT-Thread 中,与上述子任务对应的程序实体就是线程,线程是实现任务的载体
它是RT-Thread中最基本的调度单位,它描述了一个任务执行的运行环境,也描述了这个任务所处的优先等级,重要的任务可设置相对较高的优先级,非重要的任务可以设置较低的优先级,不同的任务还可以设置相同的优先级,轮流运行。
上下文:当线程运行时,它会认为自己是以独占CPU 的方式在运行,线程执行时的运行环境称为上下文,具体来说就是各个变量和数据,包括所有的寄存器变量、堆栈、内存信息等。

阅读全文 »

以下为新手错误,大神请绕道,谢谢!

问题描述

今天在看一个 Java 的小游戏时,遇到项目图片资源无法加载的问题,运行显示界面如图

阅读全文 »

多关系表连接查询

连接查询:一个查询需要对多张表操作,查询结果称表之间的连接;连接关系通过字段值体现,称为连接字段

当我们查询的数据、字段值分布在不同的表中时,这种情况下需要使用多关系表的连接查询

连接类型:内连接(INNER JOIN)、外连接(OUTER JOIN)、交叉连接()、自然连接()

连接谓词:连接两个表的条件

阅读全文 »

Problem 12 Highly divisible triangular number

The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be $1 + 2 + 3 + 4 + 5 + 6 + 7 = 28$. The first ten terms would be:

$$
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …
$$

Let us list the factors of the first seven triangle numbers:

We can see that $28$ is the first triangle number to have over five divisors.
What is the value of the first triangle number to have over five hundred divisors?

阅读全文 »

问题描述

最近用 Python 解决欧拉计划第十三题时,打开文件时总是报错

FileNotFoundError: [Errno 2] No such file or directory: '/ProjectEuler/data/013.txt'

1
map(int,open('data/013.txt'))

后来查了下,发现是和编辑器有关系,涉及到工作区的概念,下面给出解决方案

阅读全文 »

👲👲作者主页:🔗杰森的博客
📒📒本文摘要用前端的知识实现立体滚动照片墙
💖💖感觉本文还不错的话,还请各位小伙伴👍点赞➕收藏⭐➕评论💭支持杰森呀✌️

阅读全文 »