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

跟我一起进行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 CNN
	1    4850 2950
	1    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 CNN
	1    5550 2950
	1    0    0    -1  
$EndComp
Wire Wire Line
	4850 2800 5550 2800
Wire Wire Line
	4850 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=Invisible

hor_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)
  )

)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值