极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 34238|回复: 15

关于atmega16U2制作独立程序导引板,一处硬件电路疑问?

[复制链接]
发表于 2015-6-25 10:50:03 | 显示全部楼层 |阅读模式


如图所示,这是arduino  mega2560 R3官方原理图中atmega16U2端的一处电路。

我现在是想把atmega16U2的USB转串口下载器单独设计成一个模块,可以给任意的已经下载了bootloader
的mega系列单片机串口下载arduino程序。

那么这个16U2的PD7(CTS)引脚的电路我就看不明白了。

CTS是目标版给下载器的下载使能信号,

该处接mega复位按键我知道目的是串口下载程序按下复位键后16U2的串口才会输出数据。

我不知道这个CTS是什么电平使能还是上升沿或者下降沿使能,为什么要跟复位引脚串一个C7(0.1uf)电容?

板子上电后C7一端对地5v(此时16U2的CTS引脚电压多少?),复位按下后电容放电,16U2的CTS(DTR)拉低。

我想知道为什么要接这个电阻和电容,直接CTS引脚跟REST复位电路相连不就行了?怕干扰?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2015-6-25 10:54:28 | 显示全部楼层
其接1K下拉电阻也许是为了保证上电后电平稳定,但是我完全不明白这个C7电容的作用!想知道这个USB boot En功能是低电平使能还是下降沿使能?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 12:08:57 | 显示全部楼层
没人能解答,难道玩arduino的人只知道写程序?
回复 支持 反对

使用道具 举报

发表于 2015-6-25 14:28:05 | 显示全部楼层
本帖最后由 帕米 于 2015-6-25 14:34 编辑
yonghui 发表于 2015-6-25 12:08
没人能解答,难道玩arduino的人只知道写程序?


哈哈..的确.
AVR Reset 引脚的复位. 应该理解吧.
  • DTR 默认是HIGH . Reset 默认也HIGH.
  • 当 DTR 为 LOW时, C7 充电. 把 RESET 拉低. MCU 复位. (0.5ms左右 C7充满 RESET 恢复为HIGH).
  • 给个电容的作用,起一定的隔离效果. 比如 按下复位键, RESET 端为 LOW. DTR端不会随后面的 Reset 发生变化.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 14:45:40 | 显示全部楼层
帕米 发表于 2015-6-25 14:28
哈哈..的确.
AVR Reset 引脚的复位. 应该理解吧.

DTR应该是目标MCU给16U2的信号吧,这个电路我觉得跟目标MCU的REST电路相连,功能应该就是:当arduino IDE软件编写完成要下载到目标MCU,点击下载,然后按下目标MCU复位键,目标MCU复位并拉低16U2的DTR引脚,16U2接收到串口发送使能信号后串口开始将程序通过串口发送到目标MCU。

而你所说的按下REST键,DTR电平不会随目标MCU复位而发生变化。那这就产生一个问题:“16U2串口能不能发送程序下载数据的信号由谁来给?”假如DTR是高电平,没有置低信号,那么16U2端串口一直会等待数据发送指令,没有发送使能那16U2串口就一直等待在那里!

这么多搞arduino的居然一点硬件都不懂,那还能说是做嵌入式开发?换个平台不又成瞎子了吗?arduino这种开发方式害人不浅啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 14:55:27 | 显示全部楼层
帕米 发表于 2015-6-25 14:28
哈哈..的确.
AVR Reset 引脚的复位. 应该理解吧.

而且这个地方的标注是不是有问题,这个地方明明接的是16U2的CTS引脚(清除发送,目标MCU通知16U2将数据传送过来),但网络标注为DTR
回复 支持 反对

使用道具 举报

发表于 2015-6-25 15:07:11 | 显示全部楼层
你理解的方式完全反了......
是下载器给MCU复位信号,使目标MCU复位进入烧写模式.. 下载程序时,都不要按复位按钮的啊!!
arduino 的强大在于函数库.拿来就能用. 没这些函数库大多数人就得抓瞎.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 15:08:03 | 显示全部楼层
帕米 发表于 2015-6-25 14:28
哈哈..的确.
AVR Reset 引脚的复位. 应该理解吧.

我想再询问一下,是不是如arduino  UNO和mega2560这两种板子,每次IDE修改或者编好程序下载到目标板上,都需要按下复位键才能开始下载程序
回复 支持 反对

使用道具 举报

发表于 2015-6-25 15:18:12 | 显示全部楼层
yonghui 发表于 2015-6-25 15:08
我想再询问一下,是不是如arduino  UNO和mega2560这两种板子,每次IDE修改或者编好程序下载到目标板上,都 ...

所有 arduino 官方的板子, 下载都不要按复位......
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 15:35:38 | 显示全部楼层
帕米 发表于 2015-6-25 15:07
你理解的方式完全反了......
是下载器给MCU复位信号,使目标MCU复位进入烧写模式.. 下载程序时,都不要按复位 ...

OK,虽然我已经验证明白这个引脚位功能了,不过还是要谢谢你!你说的对,我理解反了照成没有明白这个设计意图,我一直以为是目标MCU给16U2使能信号!我觉得arduino并不是强大,而是给那些不会写驱动的人提供便利嵌入式开发。但其自由度明显受限于bootloader,真的只适合玩玩,不适合做产品开发。搞嵌入式开发的还是自己会写驱动的好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 15:37:34 | 显示全部楼层
帕米 发表于 2015-6-25 15:18
所有 arduino 官方的板子, 下载都不要按复位......

嗯嗯,明白了。因为自己理解反了,总以为下载程序数据指令是目标MCU复位给的!所以照成错误,后来拿实际板子测试一遍就知道了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 15:44:36 | 显示全部楼层
帕米 发表于 2015-6-25 15:18
所有 arduino 官方的板子, 下载都不要按复位......

我想再问下,16U2bootloader后能否给未bootloader的目标MCU通过ISP线给其烧写bootloader?
回复 支持 反对

使用道具 举报

发表于 2015-6-25 16:42:37 | 显示全部楼层
yonghui 发表于 2015-6-25 15:35
OK,虽然我已经验证明白这个引脚位功能了,不过还是要谢谢你!你说的对,我理解反了照成没有明白这个设计 ...

呵呵说得对.
1个 OLED SSD 1306 的库. mega168P 就装不下了. 这就是所谓把精简指令集包装成对象的结果. 也只能用更大的内存,更高频率的MCU. 这就是 arduino 为什么做了 AVR 又做 ARM的原因.   瞎扯.
都是拿来玩玩的. 国外小屁孩玩. 国内大学生玩. 唉这就是差距. 但对我一个非电子专业的人员来说. arduino 就是我空闲时间用来打发时间的工具. 好吧!(我承认是看了某部电影,一破极客捣鼓着一破MP3也能成为犯罪工具),到目前为止 我了解了模拟电路,数字电路. USART, I2C, SPI .... 等等通信协议.画过板,写过车,做过小飞机.

我想对于专业的人员来说 arduino 的精华在于把 AVR 包装成 arduino 的过程实现. 和 其它模块的驱动函数库实现的过程. 这世界上没有比这更好的例子了.

看电影, 不瞎掰了.
回复 支持 反对

使用道具 举报

发表于 2015-6-25 16:50:08 | 显示全部楼层
yonghui 发表于 2015-6-25 15:44
我想再问下,16U2bootloader后能否给未bootloader的目标MCU通过ISP线给其烧写bootloader?


一个 UART 下载 , 一个  SPI下载. 这能成不?  
有个 Arduino ISP 你可以去了解了解.
回复 支持 反对

使用道具 举报

发表于 2015-6-26 21:25:53 | 显示全部楼层
帕米 发表于 2015-6-25 16:42
呵呵说得对.
1个 OLED SSD 1306 的库. mega168P 就装不下了. 这就是所谓把精简指令集包装成对象的结果. ...

           言之有理
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 02:04 , Processed in 0.056346 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表