IIC 协议原理和模拟IIC的实现步骤

IIC协议的由来

IIC协议最早是在1982年由飞利浦公司设计开发的,它是一种两线制(SDL + SCL)的串行通行方式,它也是主从机之间通信的方式,在今天也是被广泛的应用在很多的产品设备上。
使用IIC协议进行数据通信的设备,它既可以作为主机又可以作为从机(支持多主多从),并且它是一种半双工的通信方式。
另外,IIC协议还是带有总线仲裁功能的一种通信协议!

IIC 协议的一些参数

IIC 作为一种通信的协议,它是包含了几个相关的特征参数的,如下所示:

述语 说明
发送器 发送数据到总经的设备
接收器 从总线接收数据的设备
主机 初始化数据传输,产生时钟信号与结速数据传输的设备
从机 由主机寻址的设备
多主 不破坏数据与信息的情况下,多主机同时控制总线
同步 同步两个以上设备的时钟信号
仲裁 如果两个以上的主机同时想要控制总线,只能有一个主机被 允许。并且这个主机的信息不能被破坏

# IIC 协议的通信速率

IIC可以支持的通信速率范围较大,可以很好的满足多种设备对于不同的通信速度的要求,常见的IIC支持的速率有以下几个:

1)普通模式(100kHz即100kbps)

2)快速模式(Fm)(400kHz)

3)快速模式+(Fs+)(1MHz)

4)高速模式(Hs)(3.4MHz)

5)超高速模式(UFm)(5MHz)

当然,以上标明的速率一般指的是硬件IIC的速率,对于通过软件模拟实现的IIC,它的速率是受到所使用的CPU的处理速度和性能影响的,不可以一概而论!

常见开关电源11种拓扑简述(转自微信朋友圈)

本文主要讲述常见的开关电源拓扑结构简述与特点。

常见的拓扑结构,包括Buck降压、Boost升压、Buck-Boost降压-升压、Flyback反激、Forward正激、Two-Transistor Forward双晶体管正激等。见下图:

开关电源的11个拓普

这些拓扑结构都与开关式电路有关。基本的脉冲宽度调制波形定义如下:

基本的脉宽调制波形

一. buck 降压

buck降压

  • 把输入降至一个较低的电压。
  • 可能是最简单的电路。
  • 电感/电容滤波器滤平开关后的方波。
  • 输出总是小于或等于输入。
  • 输入电流不连续(斩波)。
  • 输出电流平滑。

二. Boost 升压

Boost升压

  • 把输入升至一个较高的电压。
  • 与降压一样,但重新安排了电感、开关和二极管。
  • 输出总是比大于或等于输入(忽略二极管的正向压降)。
  • 输入电流平滑。
  • 输出电流不连续(斩波)。

三. Buck-Boost 降压-升压

Buck-Boost 降压-升压

  • 电感、开关和二极管的另一种安排方法。
  • 结合了降压和升压电路的缺点。
  • 输入电流不连续(斩波)。
  • 输出电流也不连续(斩波)。
  • 输出总是与输入反向(注意电容的极性),但是幅度可以小于或大于输入。
  • “反激”变换器实际是降压-升压电路隔离(变压器耦合)形式。

四. Flyback反激

Flyback反激
如降压-升压电路一样工作,但是电感有两个绕组,而且同时作为变压器和电感。
输出可以为正或为负,由线圈和二极管的极性决定。
输出电压可以大于或小于输入电压,由变压器的匝数比决定。
这是隔离拓扑结构中最简单的。
增加次级绕组和电路可以得到多个输出。

五. Forward 正激

Forward正激

  • 降压电路的变压器耦合形式。
  • 不连续的输入电流,平滑的输出电流。
  • 因为采用变压器,输出可以大于或小于输入,可以是任何极性。
  • 增加次级绕组和电路可以获得多个输出。
  • 在每个开关周期中必须对变压器磁芯去磁。常用的做法是增加一个与初级绕组匝数相同的绕组。
  • 在开关接通阶段存储在初级电感中的能量,在开关断开阶段通过另外的绕组和二极管释放。

六. Two-Transistor Forward双晶体管正激

Two-Transistor Forward双晶体管正激

  • 两个开关同时工作。
  • 开关断开时,存储在变压器中的能量使初级的极性反向,使二极管导通。
  • 主要优点:每个开关上的电压永远不会超过输入电压;无需对绕组磁道复位

七. Push-Pull 推挽

Push-Pull推挽

  • 开关(FET)的驱动不同相,进行脉冲宽度调制(PWM)以调节输出电压。
  • 良好的变压器磁芯利用率——在两个半周期中都传输功率。
  • 全波拓扑结构,所以输出纹波频率是变压器频率的两倍。
  • 施加在FET上的电压是输入电压的两倍。

八. Half-Bridge 半桥

Half-Bridge半桥

  • 较高功率变换器极为常用的拓扑结构。
  • 开关的驱动不同相,进行脉冲宽度调制以调节输出电压。
  • 良好的变压器磁芯利用率——在两个半周期中都传输功率。而且初级绕组的利用率优于推挽电路。
  • 全波拓扑结构,所以输出纹波频率是变压器频率的两倍。
  • 施加在FET上的电压与输入电压相等。

九. Full-Bridge 全桥

Full-Bridge全桥

  • 较高功率变换器最为常用的拓扑结构。
  • 开关以对角对的形式驱动,进行脉冲宽度调制以调节输出电压。
  • 良好的变压器磁芯利用率——在两个半周期中都传输功率。
  • 全波拓扑结构,所以输出纹波频率是变压器频率的两倍。
  • 施加在 FETs上的电压与输入电压相等。
  • 在给定的功率下,初级电流是半桥的一半。

十. SEPIC 单端初级电感变换器 (Single-Ended Primary Inductance Converter)

SEPIC单端初级电感变换器

  • 输出电压可以大于或小于输入电压。
  • 与升压电路一样,输入电流平滑,但是输出电流不连续。
  • 能量通过电容从输入传输至输出。
  • 需要两个电感。

十一. C’uk(Slobodan C’uk的专利)

Slobodan C’uk的专利

  • 输出反相。
  • 输出电压的幅度可以大于或小于输入。
  • 输入电流和输出电流都是平滑的。
  • 能量通过电容从输入传输至输出。
  • 需要两个电感。
  • 电感可以耦合获得零纹波电感电流。

Buck电路的工作细节

1. Buck-降压调整器-连续导电

Buck 连续导通

  • 电感电流连续。
  • Vout是其输入电压(V1)的均值。
  • 输出电压为输入电压乘以开关的负荷比(D)。
  • 接通时,电感电流从电池流出。
  • 开关断开时电流流过二极管。
  • 忽略开关和电感中的损耗,D与负载电流无关。
  • 降压调整器和其派生电路的特征是:输入电流不连续(斩波),输出电流连续(平滑)。

2. Buck-降压调整器-临界导电

Buck 临界导通
电感电流仍然是连续的,只是当开关再次接通时“达到”零。这被称为“临界导电”。输出电压仍等于输入电压乘以D。

3. Buck-降压调整器-非连续导电

Buck 断续导通

  • 在这种情况下,电感中的电流在每个周期的一段时间中为零。
  • 输出电压仍然(始终)是v1的平均值。
  • 输出电压不是输入电压乘以开关的负荷比(D)。
  • 当负载电流低于临界值时,D随着负载电流而变化(而Vout保持不变)。

Boost升压调整器

Boost升压调整器

  • 输出电压始终大于(或等于)输入电压。输入电流连续,输出电流不连续(与降压调整器相反)。
  • 输出电压与负荷比(D)之间的关系不如在降压调整器中那么简单。在连续导电的情况下:
    Boost升压调整器输出电压与输入电压公式
    在本例中,Vin = 5 , Vout = 15D = 2/3;Vout = 15 , D = 2/3。

变压器工作

1. 变压器工作(包括初级电感的作用)

变压器的初级电感作用
变压器看作理想变压器,它的初级(磁化)电感与初级并联。

2. 反激变压器

反激变压器初级电感
此处初级电感很低,用于确定峰值电流和存储的能量。当初级开关断开时,能量传送到次级。

3. Forward 正激变换变压器

正激变压器初级电感

  • 初级电感很高,因为无需存储能量。
  • 磁化电流(i1)流入 “磁化电感”,使磁芯在初级开关断开后去磁(电压反向)

什么是电源的浮地架构

浮地驱动

在驱动电路设计中,经常会提到MOS管需要浮地驱动,那么什么是浮地驱动呢?简单的说就是MOS管的S极与控制IC的地不是直接相连的,也就是说不是共地的。
以我们常用的BUCK电路为例,如下图:控制IC的地一般是与输入电源的地共地的,而MOS管的S极与输入电源的地之间还有一个二极管,所以控制IC的驱动信号不能直接接到MOS管的栅极,而需要额外的驱动电路或驱动IC,比如变压器隔离驱动或类似IR2110这样的带自举电路的驱动芯片。

图1,bcuk浮地

当然还有另外的方式,那就是采用别的方式给控制IC供电,然后将控制IC的地连接到MOS管的S端,这样就不是浮地了,控制IC的输出就可以直接驱动MOS管。

下图是一款隔离驱动的浮地设计
图2,隔离电路浮地

Hugo学习笔记三,命令行

查询所有命令

hugo -h

创建Hugo 静态网站

hugo new site mywebsite

创建文章, 当前必须mywebsite下才可创建文章

创建的文章存放在 mywebsite/content/p/test.md下

使用命令创建的hogo可以监控到, 实时显示到预览上

hugo new p/test.md

启动服务, 必须在mywebsite文件夹下启动

hugo server

草稿也预览, -D 参数, 必须在mywebsite文件夹下启动

hugo -D server

指定预览的主题, 必须在mywebsite文件夹下启动

papermod是在themes文件夹下的主题名称

hugo -D server –theme=papermod

指定预览的端口

hugo -D server –port=1313

指定服务绑定在哪个端口, 比如你想在手机预览, 电脑手机同一局域网时

电脑ip 192.168.1.20, 手机访问192.168.1.20就能看到预览

hugo -D server –bind=”192.168.1.20” –port=80

指定预览的默认地址, http://192.168.1.20:1313

指定文件的目录名进行编译

hugo server –source=serif
错误示例

hugo -D server –baseUrl=”http://192.168.1.20/“ –port=1313

访问不到, 没有绑定ip, 访问http://192.168.1.20:1313失败, 访问localhost:1313则显示

访问任意链接被定位到http://192.168.1.20:1313上

正确做法,绑定当前ip.提醒baseUrl最后结尾必须是’/‘

hugo -D server –baseUrl=”http://192.168.1.20/“ –port=1313 –bind=”192.168.1.20”

指定配置文件

hugo -D server –config=config.yml

指定输出静态博客网站的目录lizicai.com, 再次提醒baseUrl最后一位是/

hugo –theme=papermod –baseUrl=”https://lizicai.com/“ –destination=”lizicai.com” –config=config.yml

Hugo学习笔记一,初步运行一遍

安装hugo
  1. 官网地址: https://gohugo.io/
  2. github官网地址:https://github.com/gohugoio/hugo,进入后再进入release页,然后下载 linux的安装文件,安装之。
初步使用
  1. 生成hugo 博客目路并自动初始化

    1
    2
    3
    $ mkdir myblog
    $ cd myblog
    $ hugo new site myhugo #在当前目录下创建myweb站点目录,生成的目录结构如下:

    archetypes 目录中定义了Hugo创建markdown文件的模板。
    content 存放markdown文件。
    data 存放数据文件。
    layouts 存放模板文件。
    static 存放静态文件。
    themes 存放主题。
    config.toml 配置文件。

  2. 下载主题,并使用之

    1
    2
    3
    4
    5
    6
    $ cd ~/myblog/myhugo
    $ git clone https://github.com/dillonzq/LoveIt.git themes/LoveIt # 下载LoveIt主题
    $ git clone https://github.com/panr/hugo-theme-terminal.git themes/terminal # 下载terminal主题
    $ git clone https://github.com/wowchemy/starter-hugo-research-group themes/research-group

    $ hugo server -t LoveIt # 运行hugo,并采用LoveIt主题。这只是初步使用,可通过设置,不用在命令行来指定
  3. 采用下载的主题范例
    以 hugo-serif-theme主题为例

    1
    2
    3
    4
    5
    6
    $ cd myblog/themes/hugo-serif-theme/ #进入主题目录
    $ cp -r exampleSite ../../ # 把主题的范例目录copy到myblog目录下
    $ cd ~/myblog/ # 回到myblog目录
    $ mv exampleSite serif # 给范例目录改名
    $ hugo server --source=serif # 指定文件的目录名进行编译
    # 如果出错,修改 serif目录下的config.toml文件,把主题目录改成正确的就行
  4. 修改 ~/myblog/myhugo/config.toml文件,增加
    theme = “XXXX”,可指定默认主题

编写第一个文章
  1. 生成文档
    1
    $ hugo new posts/first_post.md # 在content下生成posts目录,并生成first_post.md文档
  2. 内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ---
    title: "Hugo学习笔记一,初步运行一遍"
    date: 2022-11-18T11:40:38+08:00
    tags: ["Hugo"]
    categories: ["stucy"]
    toc:
    enable: true
    description: 学习hugo的笔记1,初接触
    draft: true
    ---
  3. 一些经验
    其实 hugo 在新建文章时,不一定要 hugo new posts/xxxx.md。

可以 hugo new xxxx.md,这样会在 content 目录下新建文件 xxxx.md,网站中可以通过 /xxxx 来访问。

还可以 hugo new /xxxx.md,这样会在 content 目录下的 目录下新建文件 xxxx.md(若文件夹 不存在则会自动新建),网站中可以通过 //xxxx 来访问。此时,在网站中访问 / 即可显示目录下所有文章的列表,实现文章聚合。

对于每一个 的聚合,我们可以在网站目录下的 archetypes 目录中,新建一个 .md 文件,则可创建该类聚合的模板,后续的每一次 hugo new /xxxx.md 都会以 .md 为模板。

在本地启动网站
1
$ hugo server -D --bind "0.0.0.0" # 浏览器中用http://0.0.0.0:1313/查看
部署到GitHub
  1. 在github上建立自己的仓库,比如 laoshiren,那么未来你的主页就会是laoshiren.github.io
  2. 修改 ~/myblog/myhugo/config.toml文件
    修改config.toml文件中的baseURL为https://laoshiren.github.io
  3. 执行
    1
    2
    3
    4
    5
    6
    7
    cd public
    git init
    git remote add origin https://github.com/GitHub账号名/laoshiren.github.io.git
    #此URL可在你的repo中找到
    git add .
    git commit -m "update %date%,%time%"
    git push origin master

Hugo学习笔记二,配置文件

除了 Hugo 全局配置 和 菜单配置 之外, LoveIt 主题还允许您在网站配置中定义以下参数 (这是一个示例 config.toml, 其内容为默认值).

  1. ~/myblog/myhugo/config.toml文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    baseURL = "http://example.org/"

    # 更改使用 Hugo 构建网站时使用的默认主题
    theme = "LoveIt"

    # 网站标题
    title = "我的全新 Hugo 网站"

    # 网站语言, 仅在这里 CN 大写 ["en", "zh-CN", "fr", "pl", ...]
    languageCode = "zh-CN"
    # 语言名称 ["English", "简体中文", "Français", "Polski", ...]
    languageName = "简体中文"
    # 是否包括中日韩文字
    hasCJKLanguage = true

    # 默认每页列表显示的文章数目
    paginate = 12
    # 谷歌分析代号 [UA-XXXXXXXX-X]
    googleAnalytics = ""
    # 版权描述,仅仅用于 SEO
    copyright = ""

    # 是否使用 robots.txt
    enableRobotsTXT = true
    # 是否使用 git 信息
    enableGitInfo = true
    # 是否使用 emoji 代码
    enableEmoji = true

    # 忽略一些构建错误
    ignoreErrors = ["error-remote-getjson", "error-missing-instagram-accesstoken"]

    # 作者配置
    [author]
    name = "xxxx"
    email = ""
    link = ""

    # 菜单配置
    [menu]
    [[menu.main]]
    weight = 1
    identifier = "posts"
    # 你可以在名称 (允许 HTML 格式) 之前添加其他信息, 例如图标
    pre = ""
    # 你可以在名称 (允许 HTML 格式) 之后添加其他信息, 例如图标
    post = ""
    name = "文章"
    url = "/posts/"
    # 当你将鼠标悬停在此菜单链接上时, 将显示的标题
    title = ""
    [[menu.main]]
    weight = 2
    identifier = "tags"
    pre = ""
    post = ""
    name = "标签"
    url = "/tags/"
    title = ""
    [[menu.main]]
    weight = 3
    identifier = "categories"
    pre = ""
    post = ""
    name = "分类"
    url = "/categories/"
    title = ""
  2. ~/myblog/myhugo/themes/LoveIt/config.toml文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    [params]
    # 网站默认主题样式 ["auto", "light", "dark"]
    defaultTheme = "auto"
    # 公共 git 仓库路径,仅在 enableGitInfo 设为 true 时有效
    gitRepo = ""
    # LoveIt 新增 | 0.1.1 哪种哈希函数用来 SRI, 为空时表示不使用 SRI
    # ["sha256", "sha384", "sha512", "md5"]
    fingerprint = ""
    # LoveIt 新增 | 0.2.0 日期格式
    dateFormat = "2006-01-02"
    # 网站标题, 用于 Open Graph 和 Twitter Cards
    title = "我的网站"
    # 网站描述, 用于 RSS, SEO, Open Graph 和 Twitter Cards
    description = "这是我的全新 Hugo 网站"
    # 网站图片, 用于 Open Graph 和 Twitter Cards
    images = ["/logo.png"]

    # 页面头部导航栏配置
    [params.header]
    # 桌面端导航栏模式 ["fixed", "normal", "auto"]
    desktopMode = "fixed"
    # 移动端导航栏模式 ["fixed", "normal", "auto"]
    mobileMode = "auto"
    # LoveIt 新增 | 0.2.0 页面头部导航栏标题配置
    [params.header.title]
    # LOGO 的 URL
    logo = ""
    # 标题名称
    name = ""
    # 你可以在名称 (允许 HTML 格式) 之前添加其他信息, 例如图标
    pre = ""
    # 你可以在名称 (允许 HTML 格式) 之后添加其他信息, 例如图标
    post = ""
    # LoveIt 新增 | 0.2.5 是否为标题显示打字机动画
    typeit = false

    # 页面底部信息配置
    [params.footer]
    enable = true
    # LoveIt 新增 | 0.2.0 自定义内容 (支持 HTML 格式)
    custom = ''
    # LoveIt 新增 | 0.2.0 是否显示 Hugo 和主题信息
    hugo = true
    # LoveIt 新增 | 0.2.0 是否显示版权信息
    copyright = true
    # LoveIt 新增 | 0.2.0 是否显示作者
    author = true
    # 网站创立年份
    since = 2019
    # ICP 备案信息,仅在中国使用 (支持 HTML 格式)
    icp = ""
    # 许可协议信息 (支持 HTML 格式)
    license = '<a rel="license external nofollow noopener noreffer" href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank">CC BY-NC 4.0</a>'

    # LoveIt 新增 | 0.2.0 Section (所有文章) 页面配置
    [params.section]
    # section 页面每页显示文章数量
    paginate = 20
    # 日期格式 (月和日)
    dateFormat = "01-02"
    # RSS 文章数目
    rss = 10

    # LoveIt 新增 | 0.2.0 List (目录或标签) 页面配置
    [params.list]
    # list 页面每页显示文章数量
    paginate = 20
    # 日期格式 (月和日)
    dateFormat = "01-02"
    # RSS 文章数目
    rss = 10

    # LoveIt 新增 | 0.2.0 应用图标配置
    [params.app]
    # 当添加到 iOS 主屏幕或者 Android 启动器时的标题, 覆盖默认标题
    title = "我的网站"
    # 是否隐藏网站图标资源链接
    noFavicon = false
    # 更现代的 SVG 网站图标, 可替代旧的 .png 和 .ico 文件
    svgFavicon = ""
    # Android 浏览器主题色
    themeColor = "#ffffff"
    # Safari 图标颜色
    iconColor = "#5bbad5"
    # Windows v8-10磁贴颜色
    tileColor = "#da532c"

    # LoveIt 新增 | 0.2.0 搜索配置
    [params.search]
    enable = true
    # 搜索引擎的类型 ["lunr", "algolia"]
    type = "lunr"
    # 文章内容最长索引长度
    contentLength = 4000
    # 搜索框的占位提示语
    placeholder = ""
    # LoveIt 新增 | 0.2.1 最大结果数目
    maxResultLength = 10
    # LoveIt 新增 | 0.2.3 结果内容片段长度
    snippetLength = 50
    # LoveIt 新增 | 0.2.1 搜索结果中高亮部分的 HTML 标签
    highlightTag = "em"
    # LoveIt 新增 | 0.2.4 是否在搜索索引中使用基于 baseURL 的绝对路径
    absoluteURL = false
    [params.search.algolia]
    index = ""
    appID = ""
    searchKey = ""

    # 主页配置
    [params.home]
    # LoveIt 新增 | 0.2.0 RSS 文章数目
    rss = 10
    # 主页个人信息
    [params.home.profile]
    enable = true
    # Gravatar 邮箱,用于优先在主页显示的头像
    gravatarEmail = ""
    # 主页显示头像的 URL
    avatarURL = "/images/avatar.png"
    # LoveIt 更改 | 0.2.7 主页显示的网站标题 (支持 HTML 格式)
    title = ""
    # 主页显示的网站副标题 (允许 HTML 格式)
    subtitle = "这是我的全新 Hugo 网站"
    # 是否为副标题显示打字机动画
    typeit = true
    # 是否显示社交账号
    social = true
    # LoveIt 新增 | 0.2.0 免责声明 (支持 HTML 格式)
    disclaimer = ""
    # 主页文章列表
    [params.home.posts]
    enable = true
    # 主页每页显示文章数量
    paginate = 6
    # LoveIt 删除 | 0.2.0 被 params.page 中的 hiddenFromHomePage 替代
    # 当你没有在文章前置参数中设置 "hiddenFromHomePage" 时的默认行为
    defaultHiddenFromHomePage = false

    # 作者的社交信息设置
    [params.social]
    GitHub = "xxxx"
    Linkedin = ""
    Twitter = "xxxx"
    Instagram = "xxxx"
    Facebook = "xxxx"
    Telegram = "xxxx"
    Medium = ""
    Gitlab = ""
    Youtubelegacy = ""
    Youtubecustom = ""
    Youtubechannel = ""
    Tumblr = ""
    Quora = ""
    Keybase = ""
    Pinterest = ""
    Reddit = ""
    Codepen = ""
    FreeCodeCamp = ""
    Bitbucket = ""
    Stackoverflow = ""
    Weibo = ""
    Odnoklassniki = ""
    VK = ""
    Flickr = ""
    Xing = ""
    Snapchat = ""
    Soundcloud = ""
    Spotify = ""
    Bandcamp = ""
    Paypal = ""
    Fivehundredpx = ""
    Mix = ""
    Goodreads = ""
    Lastfm = ""
    Foursquare = ""
    Hackernews = ""
    Kickstarter = ""
    Patreon = ""
    Steam = ""
    Twitch = ""
    Strava = ""
    Skype = ""
    Whatsapp = ""
    Zhihu = ""
    Douban = ""
    Angellist = ""
    Slidershare = ""
    Jsfiddle = ""
    Deviantart = ""
    Behance = ""
    Dribbble = ""
    Wordpress = ""
    Vine = ""
    Googlescholar = ""
    Researchgate = ""
    Mastodon = ""
    Thingiverse = ""
    Devto = ""
    Gitea = ""
    XMPP = ""
    Matrix = ""
    Bilibili = ""
    Discord = ""
    DiscordInvite = ""
    Lichess = ""
    ORCID = ""
    Pleroma = ""
    Kaggle = ""
    MediaWiki= ""
    Plume = ""
    HackTheBox = ""
    RootMe= ""
    Phone = ""
    Email = "xxxx@xxxx.com"
    RSS = true # LoveIt 新增 | 0.2.0

    # LoveIt 更改 | 0.2.0 文章页面全局配置
    [params.page]
    # LoveIt 新增 | 0.2.0 是否在主页隐藏一篇文章
    hiddenFromHomePage = false
    # LoveIt 新增 | 0.2.0 是否在搜索结果中隐藏一篇文章
    hiddenFromSearch = false
    # LoveIt 新增 | 0.2.0 是否使用 twemoji
    twemoji = false
    # 是否使用 lightgallery
    lightgallery = false
    # LoveIt 新增 | 0.2.0 是否使用 ruby 扩展语法
    ruby = true
    # LoveIt 新增 | 0.2.0 是否使用 fraction 扩展语法
    fraction = true
    # LoveIt 新增 | 0.2.0 是否使用 fontawesome 扩展语法
    fontawesome = true
    # 是否在文章页面显示原始 Markdown 文档链接
    linkToMarkdown = true
    # LoveIt 新增 | 0.2.4 是否在 RSS 中显示全文内容
    rssFullText = false
    # LoveIt 新增 | 0.2.0 目录配置
    [params.page.toc]
    # 是否使用目录
    enable = true
    # LoveIt 新增 | 0.2.9 是否保持使用文章前面的静态目录
    keepStatic = true
    # 是否使侧边目录自动折叠展开
    auto = true
    # LoveIt 新增 | 0.2.0 代码配置
    [params.page.code]
    # 是否显示代码块的复制按钮
    copy = true
    # 默认展开显示的代码行数
    maxShownLines = 50
    # LoveIt 更改 | 0.2.0 KaTeX 数学公式
    [params.page.math]
    enable = true
    # LoveIt 更改 | 0.2.11 默认行内定界符是 $ ... $ 和 \( ... \)
    inlineLeftDelimiter = ""
    inlineRightDelimiter = ""
    # LoveIt 更改 | 0.2.11 默认块定界符是 $$ ... $$, \[ ... \], \begin{equation} ... \end{equation} 和一些其它的函数
    blockLeftDelimiter = ""
    blockRightDelimiter = ""
    # KaTeX 插件 copy_tex
    copyTex = true
    # KaTeX 插件 mhchem
    mhchem = true
    # LoveIt 新增 | 0.2.0 Mapbox GL JS 配置
    [params.page.mapbox]
    # Mapbox GL JS 的 access token
    accessToken = ""
    # 浅色主题的地图样式
    lightStyle = "mapbox://styles/mapbox/light-v10?optimize=true"
    # 深色主题的地图样式
    darkStyle = "mapbox://styles/mapbox/dark-v10?optimize=true"
    # 是否添加 NavigationControl
    navigation = true
    # 是否添加 GeolocateControl
    geolocate = true
    # 是否添加 ScaleControl
    scale = true
    # 是否添加 FullscreenControl
    fullscreen = true
    # LoveIt 更改 | 0.2.0 文章页面的分享信息设置
    [params.page.share]
    enable = true
    Twitter = true
    Facebook = true
    Linkedin = false
    Whatsapp = false
    Pinterest = false
    Tumblr = false
    HackerNews = true
    Reddit = false
    VK = false
    Buffer = false
    Xing = false
    Line = true
    Instapaper = false
    Pocket = false
    Flipboard = false
    Weibo = true
    Blogger = false
    Baidu = false
    Odnoklassniki = false
    Evernote = false
    Skype = false
    Trello = false
    Mix = false
    # LoveIt 更改 | 0.2.0 评论系统设置
    [params.page.comment]
    enable = false
    # Disqus 评论系统设置
    [params.page.comment.disqus]
    # LoveIt 新增 | 0.1.1
    enable = false
    # Disqus 的 shortname,用来在文章中启用 Disqus 评论系统
    shortname = ""
    # Gitalk 评论系统设置
    [params.page.comment.gitalk]
    # LoveIt 新增 | 0.1.1
    enable = false
    owner = ""
    repo = ""
    clientId = ""
    clientSecret = ""
    # Valine 评论系统设置
    [params.page.comment.valine]
    enable = false
    appId = ""
    appKey = ""
    placeholder = ""
    avatar = "mp"
    meta= ""
    pageSize = 10
    # 为空时自动适配当前主题 i18n 配置
    lang = ""
    visitor = true
    recordIP = true
    highlight = true
    enableQQ = false
    serverURLs = ""
    # LoveIt 新增 | 0.2.6 emoji 数据文件名称, 默认是 "google.yml"
    # ["apple.yml", "google.yml", "facebook.yml", "twitter.yml"]
    # 位于 "themes/LoveIt/assets/lib/valine/emoji/" 目录
    # 可以在你的项目下相同路径存放你自己的数据文件:
    # "assets/lib/valine/emoji/"
    emoji = ""
    # Facebook 评论系统设置
    [params.page.comment.facebook]
    enable = false
    width = "100%"
    numPosts = 10
    appId = ""
    # 为空时自动适配当前主题 i18n 配置
    languageCode = "zh_CN"
    # LoveIt 新增 | 0.2.0 Telegram Comments 评论系统设置
    [params.page.comment.telegram]
    enable = false
    siteID = ""
    limit = 5
    height = ""
    color = ""
    colorful = true
    dislikes = false
    outlined = false
    # LoveIt 新增 | 0.2.0 Commento 评论系统设置
    [params.page.comment.commento]
    enable = false
    # LoveIt 新增 | 0.2.5 utterances 评论系统设置
    [params.page.comment.utterances]
    enable = false
    # owner/repo
    repo = ""
    issueTerm = "pathname"
    label = ""
    lightTheme = "github-light"
    darkTheme = "github-dark"
    # giscus comment 评论系统设置 (https://giscus.app/zh-CN)
    [params.page.comment.giscus]
    # 你可以参考官方文档来使用下列配置
    enable = false
    repo = ""
    repoId = ""
    category = "Announcements"
    categoryId = ""
    # 为空时自动适配当前主题 i18n 配置
    lang = ""
    mapping = "pathname"
    reactionsEnabled = "1"
    emitMetadata = "0"
    inputPosition = "bottom"
    lazyLoading = false
    lightTheme = "light"
    darkTheme = "dark"
    # LoveIt 新增 | 0.2.7 第三方库配置
    [params.page.library]
    [params.page.library.css]
    # someCSS = "some.css"
    # 位于 "assets/"
    # 或者
    # someCSS = "https://cdn.example.com/some.css"
    [params.page.library.js]
    # someJavascript = "some.js"
    # 位于 "assets/"
    # 或者
    # someJavascript = "https://cdn.example.com/some.js"
    # LoveIt 更改 | 0.2.10 页面 SEO 配置
    [params.page.seo]
    # 图片 URL
    images = []
    # 出版者信息
    [params.page.seo.publisher]
    name = ""
    logoUrl = ""

    # LoveIt 新增 | 0.2.5 TypeIt 配置
    [params.typeit]
    # 每一步的打字速度 (单位是毫秒)
    speed = 100
    # 光标的闪烁速度 (单位是毫秒)
    cursorSpeed = 1000
    # 光标的字符 (支持 HTML 格式)
    cursorChar = "|"
    # 打字结束之后光标的持续时间 (单位是毫秒, "-1" 代表无限大)
    duration = -1

    # 网站验证代码,用于 Google/Bing/Yandex/Pinterest/Baidu
    [params.verification]
    google = ""
    bing = ""
    yandex = ""
    pinterest = ""
    baidu = ""

    # LoveIt 新增 | 0.2.10 网站 SEO 配置
    [params.seo]
    # 图片 URL
    image = ""
    # 缩略图 URL
    thumbnailUrl = ""

    # LoveIt 新增 | 0.2.0 网站分析配置
    [params.analytics]
    enable = false

开关电源的QR模式

最近在冲电头展上,常听厂家上去说QR模式,什么是QR模式呢? 上网找了资料一查….

原来就是准谐振模式,那么究竟什么是准谐振开关电源呢?众所周知,开关电源的损耗主要来自于开关管的开关过程,由于开关管不是理想的开关器件,开关过程不是瞬间完成的,存在一定的过渡时间,传统的方波开关电源在这个过渡转换的时间里电压和电流均为零,存在重叠的区域,因而会产生开关的损耗,随着频率的升高,这种损耗会逐渐加大而限制开关电源频率的提高,同时由于在转换过程中电压和电流短时间内的急剧变化,也会产生很大的开关噪声,形成电磁干扰EMT。为克服方波开关电源的这一缺点,二十多年来人们一直致力于低功耗的软开关电源技术的探索,在电路中加入小电感或电容元件,利用谐振的原理,使开关两端的电压或电流的变化呈正弦波的变化规律,基本的设想是想办法使开关管能在电压过零ZVS (ZeroVoltage Switching)或电流过零ZCS (Zero Current Switching)的时候完成开关转换,以消除电压和电流的重叠,实现消除或减小功耗的目的。
谐振电源(Resonant SwitchingPower)的开关损耗能够降低,但电路相对复杂。在反激式开关电源中广泛应用的是准谐振的模式。所谓反激式是指原边主功率开关管与副边整流管的开关状态相反,开关管导通时,副边的整流二极管截止,反激式变换器只是在原边开关管导通时储存能量,当它截止时才向负载释放能量,故高频变压器在开关过程中,既起变压隔离作用,又是电感储能元件。反激式开关电源因电路简洁,容易实现多路输出而在彩电中得到广泛应用。不同于谐振开关电源谐振过程主动参与整个能量变化的过程(振荡>l}形为正弦波),准谐振模式是谐振只在整个电源能量变换的一个阶段—开关转换的时候完成(波形仍接近为方波),通过谐振使开关管在零电压(或最小电压)或者是零电流的时刻完成开关转换,同时又保持方波开关电源的高能量传输模式,因此称为准谐振(quasi-resanent )QR。

caddy1.4与2.0的区别,测试表格语句

以下为表格的测试语句

项目 caddy1.4 caddy2.0
压缩说明 gzip encode zstd gzip
php刘明 fastcgi / 127.0.0.1:9000 php php_fastcgi localhost:9000
文件指示 file_server

以下为json的测试语句

1
2
3
4
5
6
7
8
9
10
11
12
{
"visits": [
{
"visit_date": "2023-10-01",
"notes": "客户对新产品感兴趣,约定下周再次拜访。"
},
{
"visit_date": "2023-10-08",
"notes": "客户反馈产品价格较高,需要进一步沟通。"
}
]
}

mermaid写甘特图的语法汇总

一 例子
1
2
3
4
5
6
7
8
9
10
11
12
13
gantt
title 项目进度
dateFormat YYYY-MM-DD
axisFormat %m-%d
excludes sunday,monday,tuesday,friday,2014-03-01
section 第一阶段
需求分析 :crit, a1, 2014-01-01, 30d
设计评审 :after a1, 20d

section 第二阶段
第一批测试 :done, 2014-01-12 , 12d
第二批测试 :24d
客户验收 :milestone,2h
二 语法解释
  1. gantt 表示这是一个甘特图
  2. title 定义甘特图的标题
  3. dateFormat 定义甘特图中日期显示的格式,更多格式可以参考 https://mermaid-js.github.io/mermaid/#/gantt?id=input-date-format
  4. section 定义一个一个的区域,可以包含一个或多个任务,以section关键字开始一行,并给予命名
  5. 任务定义语法: 任务名称:别名,开始日期,天数
  6. 状态的修饰语法 active(表示还没有完成,会显示为蓝色), done(表示已完成, 会显示为灰色),crit(表示关键任务,会显示为红色)
  7. 任务时长:d(天),w(周),h(小时),m(分钟)
  8. 任务可以有一个别名,例如上面的 a1 ,然后在其他任务中可以引用依赖,例如 after a1
  9. 如果某个任务没有写开始日期,默认就是在上一个任务之后
  10. excludes 是指要排除哪些日期,可以写具体的日期,也可以写 weekends(周末),或具体的工作日,如 sunday,monday 这样的语法,可以写多种的组合
  11. milestone 表示里程碑,程碑的确切位置是由里程碑的初始日期和任务的“持续时间”确定的:初始日期+持续时间/2
  12. 输入注释,解析器将忽略注释。注释必须在单独的行上,并且必须以%%(双百分号)开头。注释开始后到下一个换行符的任何文本都将被视为注释,包括任何图表语法。

关于高边(high side)与低边(low side)

最近与朋友聊到,我们的REF7306可以高边(high side)与低边(low side),然后朋友问我,啥子叫high side与low side,我……

  1. 先看图1
    图1,MOS管的高边与低边

图2,三级管的高边与低边,MOS管的高边与低边
2. 驱动负载有两种基本方法:低边驱动,高边驱动。
电路中,晶体管常常被用来当做开关使用。晶体管用作开关时有两种不同的接线方式:高边(high side)和低边(low side)。高边和低边是由晶体管在电路中的位置决定的。晶体管可以是双极性晶体管(BJT)或者场效应管(MOSFET)。
左边
图3 ,左边,开关接地,也就是说开关管在负载和地之间,是低边电路
图3 ,右边,开关连接在电源正极和负载高电压端之间,是高边电路

图3,高边与低边是由开关的位置决定的

  1. 低边晶体管电路
    低边开关,晶体管接地,也就是说晶体管在负载和地之间。由于晶体管正在开关接地线路或位于负载的低电压端,因此称为低边开关。
    通常使用 NPN 型三极管或者 N 沟道场效应管。
    图4,低边电路
    对于 NPN 三极管来说,发射极接地,集电极连接到负载。作为开关,三极管工作在饱和状态。饱和意味着有足够的基极电流来完全开启三极管。
    对于 N 沟道场管来说,源极接地,漏极连接到负载的负侧。虽然您可以在该电路中使用结型场效应管(JFET),但增强型场管效果更好。注意:场管有一个下拉电阻。
    低边驱动特点:容易实现(电路也比较简单,一般由MOS管加几个电阻、电容)、适用电路简化和成本控制的情况。

  2. 高边晶体管电路
    与低边开关相对的是高边开关。晶体管连接在电源正极和负载高电压端之间。在 Arduino 或 Raspberry Pi 电路中使用这些晶体管可能会有些困难。
    通常使用 PNP 型三极管或者 P 沟道场效应管。
    图5,高边电路
    对于 PNP 型三极管来说,发射极连接到电压正极,而集电极连接到负载。对比上面的低边三极管开关电路,PNP 的发射极和集电极正好是与之颠倒的。就像 NPN 三极管一样,PNP 三极管需要在饱和区工作才能完全导通晶体管。
    对于 P 沟道场管来说,源极连接到电压正极,漏极连接负载。与低边开关一样,您可能希望使用增强型场效应管。注意:场管有一个上拉电阻。
    图6,高边电路
    当被控信号(负载电路)的电压电压和控制信号电压相同时,如果使用 P 型晶体管,上面的电路可以正常工作。值得注意的是 P 管是个反管,也就是说,输入高电平时,电路不导通,输入低电平时导通。
    高边驱动器的设计比同等的低边复杂一些,一个原因是它通常使用(NMOSFET)作为功率元件。NMOSFET是优选的,因为它们可以制造得比p沟道器件更小且更便宜,以获得相同的性能。但是NMOSFET通过将栅极电压升高到漏极电压以上而导通。在汽车应用中,漏极电压通常是系统中的最高电压(即电池电压),因此需要额外的升压器件将栅极电压提升到足够的水平。

  3. 高边晶体管为什么会存在
    对于开关来说,使用低边开关简单易用,易于理解。而且,对于双极型(BJT)晶体管和场管来说,P 管通常比 N 管具有更大的电阻值(或更低的电流输出能力)。既然如此,它们为什么存在呢?
    低边开关电路切换的是对地的导通,高边开关电路切换的是对电源的导通。有时候,你想保持接地并且控制对电源的导通与否。还有一个原因就是,即使晶体管完全导通,其两端仍然存在一个很小的压降。这意味着,被控制器件的接地不是完全接地的 0 伏电压。对于像 LED 这样的器件,切换电源或是地并不重要。但是,对于像 MCU 这样的的有源设备需要良好的接地!这种情形需要用到高边管。还有一种情况就是开关电源中,需要控制对待转换电源的通断,也需要高边管。还有一些其他的情况,我们不一一赘述。
    总体来说,如果你要打开或关闭器件,低边开关是一个简单的解决方案。但是,如果你要控制的是整个电路或电压敏感设备的供电,则需要使用高边开关。

  4. 晶体管驱动另一个晶体管
    晶体管驱动电路是指用来驱动另一个晶体管的电路。晶体管驱动电路被用在当驱动信号电压(或电流)和被控晶体管电压不同的情况。下图是需要晶体管驱动的两种情况。
    图7,晶体官驱动另一个晶体管
    大电流场管具有相当大的栅源极阈值电压(Vgs)。虽然来自 Arduino GPIO 引脚的 5 伏电压可能足以打开晶体管,但不足以使其进入饱和状态。在场管饱和之前,其导通电阻可能相对较高,从而限制了它可以处理的最大电流。
    当被控电压高于控制信号电压时,用 NPN 三极管驱动 PNP 三极管 或 P 沟道场管是很常见的。如果没有驱动电路,晶体管可能永远不会关断。