由公司员工想到家里的鸡娃

难以挖走的员工

  我以前上班的公司“深圳博士微电子”的产品经理与销售经理团队们都很厉害,但是公司的薪水比同行来说,没有优势。曾经有许多同行来挖人,许诺的工资待遇,或职位都要高于博士微电子,但是几乎没有成功的。于时有人说很佩服博士微的马老板,以较少的钱招到了优秀的人才。

  后来我与朋友聊起这件事情。我说到,在博士微电子,公司有很多决策,比如候入进的产品线,新的产品线如何进行策划,推广等。都会与产品经理,销售经理反复讨论模拟,甚至普通业务员也参与进来。这样的话,每个项目,员工就好象参与了公司的经营一样。归属感很强。

想到家里的娃

  这里,我又想到许多家长,觉得自家的娃不听话,不爱家,家里搞的乱七八糟的。其实成天只让家里的娃只管学习,家务事全部不用干,不参与家里的建设,他如何爱这个家呢?归属感不强烈啊。

由大年初一的“陋习”想到的

  小时候过年前大扫除,大年三十吃完饭,垃圾都要收拾的干干净净的。然后大年初一这天大人就告诉不要垃圾了。“大年初一是新年第一天,中国人凡事都喜欢好彩头。如果一定要扫地,可以从外头扫到里边,象征财宝进门,而且大年初一这天一般不倒垃圾。这是认为把家中的东西拿出去,就是把家中的福带出去。”
  长大后到了外地工作,年青人聚在一起,觉得这个是陋习,迷信,过年回不了家,在集本宿舍过年的,才不会这样做。
  现在想来,一个人能三十这天把家里要预备清理的都处理好,大年初一又能能安排好卫生工作,把垃圾集成起来第二天扔,这种能提前规划,自律的人能会不成功吗?

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的处理速度和性能影响的,不可以一概而论!

Termux设置——服务自启动

当我们使用termux搭建一个网站或者云盘的时候,需要依赖mysql、nginx、php等其他服务时,每次启动软件后还要敲命令一个一个启动,效率极其低下!是否有办法能够让我们需要的服务随软件的启动而自动运行呢? termux多站给了两个办法,一个是Termux:Boot,一个是termux-servives,这里讲一下termux-services

安装termux提供的工具:termux-services

1
2
3
$ pkg install termux-services -y
# 注意:安装完成后,一定要退出termux,然后重新启动。

使用的命令格式, 以 sshd为例

  • sv-enable sshd # sshd服务设为自启动
  • sv-disable sshd # 取消sshd自启动
  • sv down sshd # 停止sshd服务,并使本次Termux运行期间sshd自启动服务失效
  • sv up sshd # 启动sshd服务
  • sv status sshd # 查看sshd服务运行状态
  • sv start sshd # 临时启动sshd,但不设置为自启动状态,相当于ssh命令
  • pkill ssh # 杀死sshd服务,但如果自启动为生效状态,sshd服务会立即重启

自己编写一个启动脚本,并用termux-services自启动

  1. 比如我的博客在 ~/myblog/myhexo下,每次进termux,要执行

    1
    2
    3
    $ cd myblog
    $ cd myhexo
    $ hexo s
  2. 如果把以上写一个脚本,命名为myhexo.sh

    1
    2
    3
    #!/data/data/com.termux/files/usr/bin/bash
    cd myblog/myhexo
    hexo s

    然后 chmod +x myhexo.sh
    再 sv-enable myhexo.sh是不能执行的。

  3. 正的方法是

  • $cd /data/data/com.termux/files/usr/var/service 目录
  • mkdir myblog
  • cd myblog
  • vim run 建立脚本,内容如下: 注意脚本名字为run
    1
    2
    3
    #!/data/data/com.termux/files/usr/bin/bash
    cd ~/myblog/myhexo
    hexo s
  • 保存并执行 chmod +x run
  • sv-enable myblog # 注意是myblog

常见开关电源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)流入 “磁化电感”,使磁芯在初级开关断开后去磁(电压反向)

2023年元旦第一文,字体资料收集

Github上发现在字体……

GitHub 官方发布了两款可变字体,分别名为:Mona Sans 和 Hubot Sans
  1. Mona Sans 字体地址在 https://github.com/github/mona-sans
    MonaSans字体
  2. Hubot Sans 字体地址在 https://github.com/github/hubot-sans
    Hubot Sans字体
现代窄斜体:smiley-sans

New 得意黑是一款在人文观感和几何特征中寻找平衡的中文黑体。整体字身窄而斜,细节融入了取法手绘美术字的特殊造型。字体支持简体中文常用字(覆盖 GB2312 编码字符集)、拉丁字母、日文假名、阿拉伯数字和各类标点符号。

目前 smiley-sans 除了支持常见数字和标点外,还支持汉字(6,767 个)、拉丁字母(覆盖欧洲、美洲、南亚各种语言所需的字符共 415 个)以及日文假名(174 个)
GitHub 地址→github.com/atelier-anchor/smiley-sans

中文字体: 霞鹜文楷 LxgwWenKai

霞鹜文楷,LxgwWenKai 一款开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生。它有着日本教科书体风格的字体,兼有仿宋和楷体的特点,可读性高。BTW,它也是第 76 期 HG 月刊的收录项。

GitHub 地址→github.com/lxgw/LxgwWenKai

霞鹜文楷字体

china_school_badge:全国高校校徽字体图标库。

该项目包含国内 200 多所高校校徽制作的字体图标。
地址:github.com/lovefc/china_school_badge

cute 表情包:fluentui-emoji

New Fluent Emoji 微软推出的一组可爱的表情包。
GitHub 地址→github.com/microsoft/fluentui-emoji
fluentui-emoji表情包

什么是电源的浮地架构

浮地驱动

在驱动电路设计中,经常会提到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 "updated %date%,%time%"
    git push origin master