跟我一起进行kiCad设计(七)

1, 目的

kiCad中的文件全部是文本文件,所以为了更好的理解kiCad,我们有必要了解其文本格式。

参考资料:

https://en.wikibooks.org/wiki/Kicad/file_formats

https://dev-docs.kicad.org/en/file-formats/sexpr-pcb/

kiCad的版本:

本人使用的是最新的release版本5.1.10. 后续如果kiCad有新的版本,它的文件格式可能会有所不同。

图1, kiCad的版本

2,工程文本信息:

为了查看具体的文件文本信息,我们首先新建一个工程,然后再添加一个电阻和电容。 在这

个过程中,可以查看各个文本的具体变化。

新建一个工程test:

图2, 新建test工程

使用文本编辑器打开工程文件test.pro。

初步浏览一下工程文件,发现其有对Pad,字体等等定义了一些参数。

update=22/05/2015 07:44:53
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]

PCB文件为空:

(kicad_pcb (version 4) (host kicad "dummy file") )

test.sch文件也基本上为空:

EESchema Schematic File Version 2
EELAYER 25 0
EELAYER END
$EndSCHEMATC

3,修改页面信息:

添加原理图的页面信息如下,查看文本信息的变化:

图3,添加页面信息

test.sch文件的内容更新了:

EESchema Schematic File Version 4
EELAYER 30 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title "TestProject"
Date "2021-07-17"
Rev "0.1"
Comp "EEtech"
Comment1 "Author: Dylan"
Comment2 "Let's do kiCad design together"
Comment3 ""
Comment4 ""
$EndDescr
$EndSCHEMATC

显然,看到了由$Descr+$EndDesc包括起来的页面信息。

为了方便对比,我用SVN的diff命令查看变化:

图4,添加页面信息后文件对比

4,添加元器件

进一步添加一个电容和电阻, 查看文本的变化:

图5,添加电容电阻

Diff 内容的差异:

图6,添加电容电阻后文件的变化

非常明显, 原理图文本文件增加了2个器件,他们分别由$Comp和$EndComp定义开始和结束。

为了更加清晰其内容的意义, 我们分别编辑电容和电阻的参数:

电阻标示为R1,阻值为10K, 封装为0603

电容标示为C1, 容值10uF, 封装同样0603

图7,编辑电容电阻的参数

并且将他们连接起来查看连线后文本的变化。注意下面的连接只是为了查看文件的变化, 不是一个实际的电路。

图8,增加连线

对比文件后,发现电容电阻的内容已经有了变化, 并且在文件的后面增加了两个wire信息:

图9,修改参数并增加连线后的对比

这里重新拷贝test.sch的内容如下:

EESchema Schematic File Version 4
EELAYER 30 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title "TestProject"
Date "2021-07-17"
Rev "0.1"
Comp "EEtech"
Comment1 "Author: Dylan"
Comment2 "Let's do kiCad design together"
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L Device:R R1
U 1 1 60F325FA
P 4850 2950
F 0 "R1" H 4920 2996 50  0000 L CNN
F 1 "10K" H 4920 2905 50  0000 L CNN
F 2 "Resistor_SMD:R_0603_1608Metric" V 4780 2950 50  0001 C CNN
F 3 "~" H 4850 2950 50  0001 C CNN1    4850 29501    0    0    -1
$EndComp
$Comp
L Device:C C1
U 1 1 60F32AF7
P 5550 2950
F 0 "C1" H 5665 2996 50  0000 L CNN
F 1 "10uF" H 5665 2905 50  0000 L CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 5588 2800 50  0001 C CNN
F 3 "~" H 5550 2950 50  0001 C CNN1    5550 29501    0    0    -1
$EndComp
Wire Wire Line4850 2800 5550 2800
Wire Wire Line4850 3100 5550 3100
$EndSCHEMATC

主要分析一下元器件相关的内容, 以电阻R1为例:

$Comp

// 标示一个元器件定义的开始

L Device:R R1

//元件的标号 R1

U 1 1 60F325FA

//60F325FA是由时间戳生成的uID?

P 4850 2950

//元件的位置坐标

F 0 "R1" H 4920 2996 50  0000 L CNN

//F 0 标示第一个参数,R1标号,H标示水平方向, 4920和2996是文本R1的坐标(上面的P标示的是元件的坐标),50是字体的大小,单位mils, 0000是一个flag,最后的一位标示是否可见,高3位无定义。0000标示可见,0001标示不可见。L标示文本水平方向左对齐(或者叫做左顶格写), CNN标示垂直方向文字中间对齐, 正常字体(不是加粗,cursive等)

F 1 "10K" H 4920 2905 50  0000 L CNN

F 2 "Resistor_SMD:R_0603_1608Metric" V 4780 2950 50  0001 C CNN

F 3 "~" H 4850 2950 50  0001 C CNN

1    4850 2950

1    0    0    -1

$EndComp

// 标示一个元器件定义的结束

参考资料里面有对上面的格式的详细解释, 这里拷贝如下:

Format:
$Comp
L name reference
U N mm time_stamp
P posx posy
List of fields:
F field_number “text” orientation posX posY size flags hor_justify style <“field_name”>(see below)
1 posx posy (redundant: not used (hmm... used in 4.0.6 maybe P seems not to be used. Best to keep these in sync))
A B C D ( orientation matrix with A, B, C, D = - 1, 0 or 1)
$EndComp
Description of the fields:
F n “text” orientation posX posY size flags hor_justify style <“field_name”>
with n = field_number (reference_field = 0, value_field = 1, footprint_field = 2, datasheet_field = 3, user_defined_fields = 4..12)
orientation = H (horizontal) or V (vertical).
posX posY = text position in mils
size = character size in mils (0,001”)
flags = abcd
a=
b=
c=
d= Visibility 0=Visible 1=Invisiblehor_justify = L (left), C (center), R (right)
style = xyz
x=vertical justify [T (top), C (center), B (bottom)
y=text_style_1 N (Normal), I (cursive)
z=text_style_2 N (normal), B (bold)
field_name = only used for user defined fields (field_number > 4)

5,网表文件

将上面的原理图导出网表文件:

(export (version D)(design(source D:\work\SVN\kicad\test\test.sch)(date "17/07/2021 22:38:54")(tool "Eeschema (5.1.10)-1")(sheet (number 1) (name /) (tstamps /)(title_block(title TestProject)(company EEtech)(rev 0.1)(date 2021-07-17)(source test.sch)(comment (number 1) (value "Author: Dylan"))(comment (number 2) (value "Let's do kiCad design together"))(comment (number 3) (value ""))(comment (number 4) (value "")))))(components(comp (ref R1)(value 10K)(footprint Resistor_SMD:R_0603_1608Metric)(datasheet ~)(libsource (lib Device) (part R) (description Resistor))(sheetpath (names /) (tstamps /))(tstamp 60F325FA))(comp (ref C1)(value 10uF)(footprint Capacitor_SMD:C_0603_1608Metric)(datasheet ~)(libsource (lib Device) (part C) (description "Unpolarized capacitor"))(sheetpath (names /) (tstamps /))(tstamp 60F32AF7)))(libparts(libpart (lib Device) (part C)(description "Unpolarized capacitor")(docs ~)(footprints(fp C_*))(fields(field (name Reference) C)(field (name Value) C))(pins(pin (num 1) (name ~) (type passive))(pin (num 2) (name ~) (type passive))))(libpart (lib Device) (part R)(description Resistor)(docs ~)(footprints(fp R_*))(fields(field (name Reference) R)(field (name Value) R))(pins(pin (num 1) (name ~) (type passive))(pin (num 2) (name ~) (type passive)))))(libraries(library (logical Device)(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Device.lib")))(nets(net (code 1) (name "Net-(C1-Pad1)")(node (ref R1) (pin 1))(node (ref C1) (pin 1)))(net (code 2) (name "Net-(C1-Pad2)")(node (ref R1) (pin 2))(node (ref C1) (pin 2)))))

从网表文件中,可以看到有定义design, components, libparts, libraries, nets 等等的定义。

6,PCB文件格式

PCB文件格式是重点, 后续会详细介绍。这里只是粘贴出它的内容:

(kicad_pcb (version 20171130) (host pcbnew "(5.1.10)-1")(general(thickness 1.6)(drawings 0)(tracks 0)(zones 0)(modules 0)(nets 1))(page A4)(title_block(title TestkiCad)(date 2021-07-17)(rev 0.1)(company EETech)(comment 1 "Author: Dylan")(comment 2 "Let's do kiCad together"))(layers(0 F.Cu signal)(31 B.Cu signal)(32 B.Adhes user)(33 F.Adhes user)(34 B.Paste user)(35 F.Paste user)(36 B.SilkS user)(37 F.SilkS user)(38 B.Mask user)(39 F.Mask user)(40 Dwgs.User user)(41 Cmts.User user)(42 Eco1.User user)(43 Eco2.User user)(44 Edge.Cuts user)(45 Margin user)(46 B.CrtYd user)(47 F.CrtYd user)(48 B.Fab user)(49 F.Fab user))(setup(last_trace_width 0.25)(trace_clearance 0.2)(zone_clearance 0.508)(zone_45_only no)(trace_min 0.2)(via_size 0.8)(via_drill 0.4)(via_min_size 0.4)(via_min_drill 0.3)(uvia_size 0.3)(uvia_drill 0.1)(uvias_allowed no)(uvia_min_size 0.2)(uvia_min_drill 0.1)(edge_width 0.05)(segment_width 0.2)(pcb_text_width 0.3)(pcb_text_size 1.5 1.5)(mod_edge_width 0.12)(mod_text_size 1 1)(mod_text_width 0.15)(pad_size 1.524 1.524)(pad_drill 0.762)(pad_to_mask_clearance 0)(aux_axis_origin 0 0)(visible_elements FFFFFF7F)(pcbplotparams(layerselection 0x010fc_ffffffff)(usegerberextensions false)(usegerberattributes true)(usegerberadvancedattributes true)(creategerberjobfile true)(excludeedgelayer true)(linewidth 0.100000)(plotframeref false)(viasonmask false)(mode 1)(useauxorigin false)(hpglpennumber 1)(hpglpenspeed 20)(hpglpendiameter 15.000000)(psnegative false)(psa4output false)(plotreference true)(plotvalue true)(plotinvisibletext false)(padsonsilk false)(subtractmaskfromsilk false)(outputformat 1)(mirror false)(drillshape 1)(scaleselection 1)(outputdirectory "")))(net 0 "")(net_class Default "This is the default net class."(clearance 0.2)(trace_width 0.25)(via_dia 0.8)(via_drill 0.4)(uvia_dia 0.3)(uvia_drill 0.1)))

跟我一起进行kiCad设计(七)相关推荐

  1. 2021企业薪酬管理咨询设计七步曲

    管理咨询公司在给企业做薪酬管理咨询的过程中,经常会发现以下特别常见的问题: 1.员工不知道公司是因为什么付的薪酬; 2.关键岗位薪资明显低于行业水平,或者同地区水平,造成人才流失; 3.新老员工薪酬矛 ...

  2. 2_kicad 5.0_在线查看KiCAD设计,论坛,免费符号和封装的零件库,第三方工具

    1_Eyrie.io - 用于在线查看KiCAD设计. 2_KiCAD.info论坛 - 用户讨论和帮助论坛. 3_SnapEDA.com - 带有免费符号和封装的零件库.(兼容Eagle,KiCAD ...

  3. PS美工设计七合一(附带安装视频全套工具)

    Adobe Photoshop,简称"PS",是由Adobe Systems开发和发行的图像处理软件.Photoshop主要处理以像素所构成的数字图像.使用其众多的编修与绘图工具, ...

  4. KICAD设计——原理图层次及标签

    由于在工程下只能添加一个原理图,和altium designer不同,若原理图较大,或一张A4尺寸原理图不够用,就可以使用KICAD自带的原理图分层功能,在父工作表下,建立起不同层次的工作表,框架清晰 ...

  5. 数据库总结作业数据库设计七

    数据库设计六个阶段: 一.需求分析阶段二.概念结构设计阶段三.逻辑结构设计阶段四.物理结构设计阶段五.数据库实施六.数据库运行和维护 一.需求分析: 需求分析和概念设计独立于任何数据库管理系统 主要目 ...

  6. 计算机的软件教学设计七年级,计算机软件系统教学设计

    交大版信息技术七年级上 计算机软件系统 教学设计 西安市自达中学 张敬 课题 计算机软件系统 课时 1 课时 教学目标 1 知识与技能目标 了解软件的概念 了解软件的分类 并能够将一些常用软件正确归类 ...

  7. 计算机的软件教学设计七年级,计算机软件系统教学设计.doc

    计算机软件系统教学设计 交大版信息技术七年级上<计算机软件系统>教学设计 西安市自达中学 张敬 课题:计算机软件系统 课时:1课时 教学目标: 1.知识与技能目标: = 1 \* GB3 ...

  8. 计算机的软件教学设计七年级,教学设计:计算机软件

    <计算机软件>教学设计 一.教材分析 1.教材的地位和作用 本课内容是新教材七年级<信息技术>第二单元<探索计算机的奥秘>第2课<了解计算机的组成>第二 ...

  9. kicad阻焊层 设计_使用开源工具KiCad设计的footSHIELD

    kicad阻焊层 设计 JR写信给我们分享了他的开放硬件项目:pedalSHIELD. 这是开放硬件+开源软件+开放说明和教程的一个很好的例子. 与Opensource.com分享您的故事 . 那里有 ...

最新文章

  1. elment-ui文件上传详解
  2. C语言数据类型大学霸IT达人
  3. 廖雪峰Java1-2Java程序基础-3整数运算
  4. 表单input中disabled提交后得不到值的解决办法
  5. Roguelike游戏的视野算法
  6. Linux的权限管理 1
  7. 将检索出来的列按逗号拼接起来
  8. 决策树-线性二分类+非线性二分类
  9. java当前路径_java获取当前路径的几种方法
  10. 配置跳转指定_http自动跳转https的配置方法
  11. FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
  12. 如何让jpa 持久化时不校验指定字段
  13. windows l2tp pptp设置
  14. 一则“HTTP 405 Method Not Allowed”的解决办法
  15. 计算机常用的数字编码是什么意思,编码是什么意思
  16. Linux下安装Atom编辑器
  17. IBM继续统领超级计算 Opteron发展迅速
  18. might和could的区别用法_地道的英语口语:Might、 may、could用法区分
  19. Bpmn.js自定义文件说明
  20. Java内存溢出异常及其处理

热门文章

  1. [转]MTK6515 android打版软件配置
  2. 小迷糊之HTML学习
  3. Ansys Zemax | 计算任意温度和压强下的折射率
  4. sql server 2008登陆服务器名称是什么
  5. Intertek与浩洋电子达成战略合作 深耕舞台灯具市场
  6. 网络营销的新一员:微信营销
  7. 统计子串在母串出现的次数
  8. 【云原生】Grafana Alerting 告警模块介绍与实战操作
  9. 极酷阳光(酷播)播放器的前置广告代码(flash和视频两种模式)
  10. A50 - 基于51单片机的太阳能充电路灯设计