yonghui 发表于 2015-6-25 10:50:03

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



如图所示,这是arduinomega2560 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复位电路相连不就行了?怕干扰?


yonghui 发表于 2015-6-25 10:54:28

其接1K下拉电阻也许是为了保证上电后电平稳定,但是我完全不明白这个C7电容的作用!想知道这个USB boot En功能是低电平使能还是下降沿使能?

yonghui 发表于 2015-6-25 12:08:57

:L没人能解答,难道玩arduino的人只知道写程序?

帕米 发表于 2015-6-25 14:28:05

本帖最后由 帕米 于 2015-6-25 14:34 编辑

yonghui 发表于 2015-6-25 12:08 static/image/common/back.gif
没人能解答,难道玩arduino的人只知道写程序?

哈哈..的确.
AVR Reset 引脚的复位. 应该理解吧.

[*] DTR 默认是HIGH . Reset 默认也HIGH.
[*] 当 DTR 为 LOW时, C7 充电. 把 RESET 拉低. MCU 复位. (0.5ms左右 C7充满 RESET 恢复为HIGH).
[*] 给个电容的作用,起一定的隔离效果. 比如 按下复位键, RESET 端为 LOW. DTR端不会随后面的 Reset 发生变化.

yonghui 发表于 2015-6-25 14:45:40

帕米 发表于 2015-6-25 14:28 static/image/common/back.gif
哈哈..的确.
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这种开发方式害人不浅啊

yonghui 发表于 2015-6-25 14:55:27

帕米 发表于 2015-6-25 14:28 static/image/common/back.gif
哈哈..的确.
AVR Reset 引脚的复位. 应该理解吧.



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

帕米 发表于 2015-6-25 15:07:11

你理解的方式完全反了......
是下载器给MCU复位信号,使目标MCU复位进入烧写模式.. 下载程序时,都不要按复位按钮的啊!!
arduino 的强大在于函数库.拿来就能用. 没这些函数库大多数人就得抓瞎.

yonghui 发表于 2015-6-25 15:08:03

帕米 发表于 2015-6-25 14:28 static/image/common/back.gif
哈哈..的确.
AVR Reset 引脚的复位. 应该理解吧.



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

帕米 发表于 2015-6-25 15:18:12

yonghui 发表于 2015-6-25 15:08 static/image/common/back.gif
我想再询问一下,是不是如arduinoUNO和mega2560这两种板子,每次IDE修改或者编好程序下载到目标板上,都 ...

所有 arduino 官方的板子, 下载都不要按复位......

yonghui 发表于 2015-6-25 15:35:38

帕米 发表于 2015-6-25 15:07 static/image/common/back.gif
你理解的方式完全反了......
是下载器给MCU复位信号,使目标MCU复位进入烧写模式.. 下载程序时,都不要按复位 ...

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

yonghui 发表于 2015-6-25 15:37:34

帕米 发表于 2015-6-25 15:18 static/image/common/back.gif
所有 arduino 官方的板子, 下载都不要按复位......

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

yonghui 发表于 2015-6-25 15:44:36

帕米 发表于 2015-6-25 15:18 static/image/common/back.gif
所有 arduino 官方的板子, 下载都不要按复位......

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

帕米 发表于 2015-6-25 16:42:37

yonghui 发表于 2015-6-25 15:35 static/image/common/back.gif
OK,虽然我已经验证明白这个引脚位功能了,不过还是要谢谢你!你说的对,我理解反了照成没有明白这个设计 ...

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

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

看电影, 不瞎掰了.

帕米 发表于 2015-6-25 16:50:08

yonghui 发表于 2015-6-25 15:44 static/image/common/back.gif
我想再问下,16U2bootloader后能否给未bootloader的目标MCU通过ISP线给其烧写bootloader?

一个 UART 下载 , 一个SPI下载. 这能成不?
有个 Arduino ISP 你可以去了解了解.

suoma 发表于 2015-6-26 21:25:53

帕米 发表于 2015-6-25 16:42 static/image/common/back.gif
呵呵说得对.
1个 OLED SSD 1306 的库. mega168P 就装不下了. 这就是所谓把精简指令集包装成对象的结果. ...

         言之有理
页: [1] 2
查看完整版本: 关于atmega16U2制作独立程序导引板,一处硬件电路疑问?