PCB 敷铜和填充

填充有两种形式:多边形 (任意形状)、矩形

多边形填充会自动规避不填充的网络,矩形填充则不会。两者均会与其选中的网络进行短接处理。他们均只能在板子的顶层和底层进行填充。

敷铜属于多边形填充,需要指定其网络,一般指定GND网络。会将标注有GND的铜线进行短接,并避开其余网络。

填充铜箔后会增大导电能力,增强抗干扰能力等。

填充方式均是以网格方式填充,PCB编辑软件可设置相应铜箔宽度、间距等参数。

chooseImage axios 上传文件

api目录下的文件

import axios from 'axios'
const baseURl = 'https://xxxxxxx.com'
axios.defaults.baseURL = baseURl
axios.defaults.withCredentials = true
 
export const upfile = params => {
    return axios.post('/xxxxxx/Tools/upload',params).then(res=>res.data)
}

页面代码

methods: {
 
  getImageBlob:function(url, cb) {
     var xhr          = new XMLHttpRequest();
     xhr.open("get", url, true);
     xhr.responseType = "blob";
     xhr.onload       = function() {
         if (this.status == 200) {
             if(cb) cb(this.response);
         }
     };
     xhr.send();
 },
chooseImage: function() {
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album'],
success: (res) => {  
 const tempFilePaths = res.tempFilePaths;
 const tempFiles =  res.tempFiles;
 console.log(tempFiles)
   this.getImageBlob( tempFilePaths[0] , function(blob){  
  let formData = new FormData();
  formData.append("file",blob) 
  upfile(formData).then(res=>{
  console.log(res) 
  })
      }); 
},
fail: (err) => {
console.log('chooseImage fail', err)
}
})
}
}


ISP 在线系统编程

这个问题也是在学单片机开始前就在考虑的,不过本着先学习后实践的目的就搁浅了,这里总结一下。

发展到如今(2019年)常用的方式是通过“在线系统编程(ISP)”这种方式来把程序写入到芯片(MCU)里,这种方式的好处是芯片不需要取出,这里我理解的在线两个字是电路。也就是说即使你的芯片已经焊接在电路版上也不同取下来通过“编程器”来进行程序写入。这里又引申出来几个协议,这些协议是按照电气标准及协议来区分的比如:RS232、RS422、UART等,这里的UART另一种叫法是TTL,其中常用的是RS232和UART(TTL)。

主要的区别RS232是负逻辑电平,5~12v是低电平,而-12~-5v是高电平。而TTL也就是UART没有那么多区分,它的电平只是5V。


网上很多的USBISP、USBASP实际就是USB接口转TTL或RS232协议这样可以对芯片进行程序写入。开始是只有USBISP也就是通过USB接口去实现转换相应的TTL或者RS232协议来达到程序写入的目的。而USBASP查阅了很多资料,也没有发现他俩的区别,不过在USBASP的官网倒是大致看出点眉目。实际USBASP和USBISP在电路设计上是一模一样的,提一点的是不论是USBASP还是USPISP他们都用到了AVR芯片。而USBASP只是一个固件程序,就是将名叫USBASP的固件写入到USPISP的电路里,这个电路里有一个AVR芯片。如果你将USBASP这个固件写到了USPISP这个电路中,那么你就可以通过Progisp这类软件来进行程序烧写。否则你只能通过AVR STUDIO这个程序来进行烧写。在我的理解看来不论是USBISP这个电路,或者是USBASP这个固件。他们本质上都是上面提到的“编程器”即你必须取下MCU芯片,通过引线或者电路中预留好的接口槽进行芯片写入。没有达到ISP可在线系统编程这种思想。他们的大致关系是

屏幕快照 2019-11-07 下午10.26.32.png


以上是对USBASP和USBISP一些解释,以及对“编程器”的一些关联想法,有了这个固件(USBASP)以后可以更好的支持一些协议或者加快写入速度。


对于“在线编程系统”如何实现,实际已经有很成熟的方案,即在电路里增加一块USB转串口的芯片。通过这个芯片达到数据传送到MCU里。因为你的电脑或者其他设备的USB接口是无法直接驱动芯片的。这里就要介绍两个能直接放在电路里的转换芯片。如:MAX232和CH340等。

MAX232是可以将TTL信号转换为RS232信号,或者RS232信号转TTL信号的。不过它的体积相对大一些,焊接在电路中比较占用位置。

CH340是将其他信号转换为TTL信号,体积相对较小,而且各种MCU芯片也相对应的支持TTL信号,TTL的信号线是MCU上的TXD和RXD。

使用上述两个芯片,就不用去做“编程器”了,一般像51单片机就是用的CH340芯片来进行和USB接口通讯写入程序的,注意的是这种情况下,你的整个电路要上电,否则是没办法写入的。而“编程器”则不需要给MCU供电,直接用引线连接到“编程器”上,“编程器”自己就可以供电给它并进行写入。

更为详细的解释,可以自行网上搜索。这里也给出一个建议:如果你的电路是在洞洞板或者面包板上进行实践的,我建议买一个“编程器”某宝搜索“USBASP或USBISP”关键字即可,10块左右。如果你的电路是要制作成PCB并且要进行调试的,我建议你买一块USB转串口芯片,直接焊在电路里依旧是10块左右。


以上仅为个人理解,如有错误还望指出。

ds18b20使用方法

ds18b20是一个比较不错的温度芯片,它是使用了一根线来实现(DS)接口。具体的可以查看相关文档。

这里主要说一下连线方式和怎么读取,连线方式如下图:

微信截图_20191105101508.png

注意这里接了一个4.7Kohm的电阻,这是一个上拉电阻,主要用于数据的传输。对于为什么要加电阻以及详细的解释可以看下面的讨论。如果不加这个电阻是无法进行有效的数据传输的。一开始就是在这里没有解决。

关于从地址的说明如下:

Read ROM(读 ROM) [33H]

Match ROM(匹配 ROM) [55H]

Skip ROM(跳过 ROM] [CCH]

Search ROM(搜索 ROM) [F0H]

Alarm search(告警搜索) [ECH]

Read ROM(读 ROM) [33H]

Match ROM(匹配 ROM) [55H]

Skip ROM(跳过 ROM] [CCH]

Search ROM(搜索 ROM) [F0H]

Alarm search(告警搜索) [ECH]

效果如下

微信截图_20191105102808.png

在DS18B20说明上VCC的位置应该是VDD是数字电源,VCC是模拟电源。这里直接将它俩都接在了模电上,因为我看很多电路图都是如此接法。具体的vcc,vdd的区别可以查阅相关资料。


以上仅为个人理解,如有错误还望指出。

PCB时钟DS1307

考虑到很多人是使用C语言来写的单片机,而我是用的basic语言来写的,所以就不贴代码了。效果图如下

屏幕快照 2019-10-30 下午7.41.57.png

连线方式:所有的时钟总线和数据总线连接到一起,接到MCU的引脚上。

读写方式:通过每个芯片不同的地址来进行数据的写入和读取。