完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
在折腾单片机的时候,总会听到ISP、SPI等缩写,这两组缩写甚至连字母都是一样的,但其实这两个缩写的含义并不相同,但又有联系(尤其是在烧录单片机的时候)。本文尝试介绍这两者的定义,区别与联系。ISP和IPS别再傻傻分不清了。 一、定义 1. ISP ISP是In-System Programming(在系统可编程)的缩写,是一类技术的统称,即我们给单片机烧写(上传)程序的时候是通过串口/下载器/仿真器等比较简单的方式进行的。 在通过ISP上传程序的时候,单片机进入ISP子程序,使得我们可以方便地对ROM进行写入和擦除。 与ISP相对的烧写方式则是将单片机放在烧写座上,直接对它的ROM擦除,烧录程序的方法。 ISP其实这是我们通常给单片机(尤其是开发板)烧写程序的方式,只不过这种方式太习以为常了,所以我们也不总是提到它的名字罢了。其实,不论是用Arduino IDE通过USB串口对Arduino板子上传程序,还是用J-Link等仿真器对STM单片机上传程序,这些操作我们都可以称之为是“ISP”。 2. SPI SPI是Serial Peripheral Interface(串行外设接口)的缩写。可能这个缩写大家更熟悉一些,它是一种串行总线协议,和我们其他常用的串行总线协议,如:I2C, UART(俗称串口), OneWire 等是一个类别的东西。 SPI是一种高速的,全双工,同步的通信总线,一般需要四根接线,分别是:
从定义我们可以看到,其实ISP和SPI这两个根本就不是一类的东西。那他们的联系在哪里呢? 答案是,我们在用ISP技术给单片机烧写程序的时候,有可能就是通过SPI协议进行上传的。 举例来说,当我们给Arduino烧写BootLoader(注意不是普通的上传程序)的时候,我们就是通过ISP技术并且通过SPI协议进行的。 以UNO为例,上图中最下方用红色方框圈出来的6个引脚,就被成为ISP(ICSP)引脚,可以通过它来烧录主芯片(ATmega328)的BootLoader和程序。但其实这6个引脚只不过是我们正常使用的时候的SPI引脚被重新引出来放在这里罢了,这里的MOSI、MISO、SCK和11-13引脚上的是一样(等电位)的,VCC, GND, RESET 也是和普通的那两排上的是一样的。所以我们可以看出,我们在通过ISP接口烧写Arduino的时候,用的是SPI串行总线协议。(更多关于Arduino ISP 的细节可以看我的这篇博客) 当然也不是所有的ISP烧录用的都是SPI协议。比如我们一般通过USB接口给Arduino上传程序的时候,其实就是最普通的串口(UART)协议(板载了USB转串口芯片),也就是0号口和1号口的那个RX和TX。再比如烧写STM芯片的时候用我们就用的是SWD或JTAG协议。 三、总结 ISP是In-System Programming的缩写,指的是我们给单片机上传程序的一种方式,使用的通信协议包括但不限于SPI; 而SPI是一种串行总线协议,用于设备之间的通信,也会被用做ISP时的通信协议。 觉得有用的话,不要吝惜评论点赞分享哦,希望大家多多包涵,有任何问题欢迎指正、讨论。 |
|
|
|
只有小组成员才能发言,加入小组>>
3311 浏览 9 评论
2994 浏览 16 评论
3493 浏览 1 评论
9058 浏览 16 评论
4087 浏览 18 评论
1177浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
598浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:31 , Processed in 1.137938 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号