0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将芯片连接到Arduino 以刻录引导程序并上传草图

454398 来源:wv 2019-10-24 15:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:计数问题

如何将芯片连接到Arduino 以刻录引导程序并上传草图

使用ATtiny84或ATtiny85时,很可能使用自己设计的试验板或电路。与Arduino Uno不同,标题上的插脚编号与Arduino IDE中的插脚编号匹配,您必须将“微小的东西”连接到实际的物理插脚。

软件中的物理引脚和引脚编号非常不同。例如,在ATtiny84上,物理引脚1用于Vcc,而在软件中,数字引脚1实际上是物理引脚12。您必须从上下文中了解正在讨论的是哪个引脚(物理或软件)(提示,大多数参考文献)。用于软件引脚)。在解释过程中,最好参考图表。

为了增加混乱,在相同的物理位置,模拟引脚可以具有与数字引脚不同的数字。 ATtiny85就是这种情况。例如,物理引脚7既是数字引脚2,又是模拟引脚1。数字引脚1是物理引脚6,它没有模拟输入。 (我只希望芯片设计人员为这可能造成的混乱为公司节省很多钱。)

这种情况是由于芯片设计人员而不是Arduino软件引起的。引脚号基于端口B和ADC的映射方式。引脚7是PB2(数字引脚2)和ADC1(模拟引脚1)。

步骤2:使用Arduino软件出现毛刺

在具有Arduino v1.0 +的Mac上,如果输入“ A1”的变量语句,则会出现错误“未声明A1”,请参见下面的代码。奇怪的是,在编程Arduino Uno时,模拟引脚引用为“ A1”,“ A2”等。

int AnalogPin1 = A1;//验证

int AnalogPin1 = 1时,这将产生错误;//而是选择A1,物理引脚7

int val = 0;

void loop()

{val = AnalogRead(analogPin1) ;//这给出了物理引脚7上A1的模拟读数。}

这是令人困惑的事情;您还可以调出数字引脚1。

int digitalPin1 = 1;//这是物理引脚6

void setup()

{pinMode(digitalPin1,OUTPUT);//将引脚1声明为输出}

void loop()

{digitalWrite(digitalPin1,HIGH);//开启}

如果您的Windows或Mac带有Arduino 1.5.6,则可以改用“ A1”并减少它与数字pin1之间的混淆。但是,如果您习惯了另一种方法,它应该可以继续工作。

步骤3:使用SoftwareSerial进行通信

假设您想使用ATtiny85从其模拟引脚发送读数,您将如何处理?它具有有限的串行通信。 Arduino附带有一个软件库,可让您向草图添加串行通信,即SoftwareSerial。它很容易添加,但是它确实占用程序空间,您必须声明一些细节。

对于下面的ATtiny85示例,刻录引导程序以使用8 MHz内部晶体。否则,晶体需要相同的串行引脚。

首先,必须通过在开始时使用#include将库包含在草图中。

#include“ SoftwareSerial.h”

然后为该函数创建变量并调用该函数。

const int Rx = 3;//这是物理引脚2

const int Tx = 4;//这是物理引脚3

SoftwareSerial mySerial(Rx,Tx);

在setup()中,输入引脚是输入还是输出,并指定波特率

void setup()

{pinMode(Rx,INPUT);

pinMode(Tx,OUTPUT);

mySerial。开始(9600);//以9600位/秒的速度发送串行数据}

调用串行打印语句时,添加“ my”。

void loop()

{ mySerial.println(VAL);//将值发送到串行监视器^ Cmd-M}

现在,打开串行监视器以查看来自‘tiny’的值。

相同的指令可以应用于ATtiny84。使用该芯片,您可以拥有更多的引脚来支持外部时钟和串行通信。如果这样做,则需要为串行线选择其他引脚。

步骤4:示例代码。 ATtiny85_SoftwareSerial_Test

//对于ATtiny85打开LED和模拟读取

//RESET |针1针8 | 5V

//3/A3 |针2针7 | 2/A1

//4/A2 |引脚3引脚6 | 1/PWM

//GND |引脚4引脚5 | 0/PWM

//对于SoftwareSerial,您必须设置为内部时钟//以释放物理引脚2和3。

//这将使物理引脚6上的LED闪烁,读取引脚7上的模拟值,并将

//模拟值发送到串行监视器以进行显示。

#include“ SoftwareSerial.h”

const int LED = 1;//这是LED的物理引脚6

const int ANTENNA = 2;//这是物理引脚7,将导线连接为天线

const int Rx = 3;//这是物理引脚2

const int Tx = 4;//这是物理引脚3

SoftwareSerial mySerial(Rx,Tx);

int val = 0;//用于存储天线读数的变量

void setup()

{

pinMode(LED,OUTPUT);//告诉Arduino LED是输出

pinMode(Rx,INPUT);

pinMode(Tx,OUTPUT);

mySerial.begin(9600);//以9600位/秒的速度发送串行数据

}

void loop()

{

digitalWrite(LED,HIGH) ;//打开LED灯

延迟(500);

digitalWrite(LED,LOW);//关闭

delay(500);

val = AnalogRead(ANTENNA);//阅读天线

mySerial.println(val);//将值发送到串行监视器^ Cmd-M

digitalWrite(LED,HIGH);//打开LED灯

delay(10); digitalWrite(LED,LOW);//关闭

delay(500);

}

步骤5:示例代码,ATtiny84_SoftwareSerial

//对于ATtiny84,打开LED和模拟读取

//5V |针1针14 | Gnd

//10/X1 |引脚2引脚13 | 0/A0

//9/X2 |引脚3引脚12 | 1/A1

//RESET |引脚4引脚11 | 2/A2

//8 |引脚5引脚10 | 3/A3

//A7/7 |引脚6引脚9 | 4/A4

//A6/6 |引脚7引脚8 | 5/A5

//对于SoftwareSerial,您可以使用外部时钟,因为物理引脚2和3是免费的。

#include“ SoftwareSerial.h”

const内置LED = 5;//这是LED的物理引脚8

const int ANTENNA = 1;//这是物理引脚12,将导线连接为天线

const int Rx = 7;//这是物理引脚6

const int Tx = 6;//这是物理引脚7

SoftwareSerial mySerial(Rx,Tx);

int val = 0;//用于存储天线读数的变量

void setup()

{

pinMode(LED,OUTPUT);//告诉Arduino LED为输出

pinMode(Rx,INPUT);

pinMode(Tx,OUTPUT);

mySerial.begin(9600);//以9600位/秒的速度发送串行数据

}

void loop()

{

digitalWrite(LED,HIGH) ;//打开LED灯

delay(500);

digitalWrite(LED,LOW);//关闭

delay(500);

val = AnalogRead(ANTENNA);//读取天线

mySerial.println(val);//将值发送到串行监视器^ Cmd-M

digitalWrite(LED,HIGH);//打开LED灯

delay(10);

digitalWrite(LED,LOW);//关闭

delay(500);

}

第6步:电气问题

我发现串行通信只能在公共电源和地上工作。实际上,这意味着从USB –串行通信设备获取电源。 USB –串行通信设备可以是Arduino Uno板,独立的USB –串行板或AVR编程器,例如Reactor Core三合一编程器。

接线就像您期望的那样。 Arduino/USB设备的电源打开了“微型”电源(引脚1表示“ 84”,引脚8表示“ 85”)。相同的连接方式也适用于接地(“ 84”为引脚14,“ 85”为引脚4)。您分配给Rx的引脚(示例代码中的引脚3)连接到Arduino上的Rx线,引脚0/Rx。对分配给Tx的引脚(示例代码中的引脚4)执行相同的操作,将其连接到Arduino上的Tx线,引脚1/Tx。

我已阅读有关通过串行连接串联添加电阻的信息。 。我认为这不是必需的。 FTDI没有列出使用电阻器连接FT232RL USB/串行芯片的信息。从“小工具”到USB/串行设备,它们都应该是TTL。如果要格外小心,可以添加200 – 2K欧姆电阻。

如果有人知道这样做的充分理由,请发布。

我还看到在Uno板上的复位和接地之间增加了一个电容器。我不确定这应该做什么。它可以使Uno板上的ATmega328P保持复位状态,以便Uno不会使用串行线。我认为跳线可能会起作用。

如果您使用Arduino Uno桥接与计算机的串行通信,则需要加载一个不会干扰的草图。如果串行监视器上出现奇怪的字符,则表明信号损坏。您只需将串行线隔离为“微小”即可。如果您使用的是Reactor Core编程器,请断开串行跳线。

步骤7:其他

您是否必须使用内部时钟进行串行通信?否,对于Attiny85,可以使用另外两个引脚代替外部时钟所需的引脚3和4。如果两个引脚用于串行,两个引脚用于外部晶振,那么除非禁用复位,否则只有一个空闲引脚。这就是为什么最好使用内部时钟的原因。它将释放两个引脚。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    462

    文章

    53559

    浏览量

    459314
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195991
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用 LinkBoy 程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板

    以下是使用 LinkBoy 程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板的详细步骤指南: 一、准备工作 ✅ 硬件需求: 项目 要求 开发板 Arduino E
    发表于 10-16 12:41

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录
    的头像 发表于 08-08 20:16 3073次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另一个<b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录<b class='flag-5'>引导</b><b class='flag-5'>程序</b>bootlaoder

    CY7C65223D-32LTXI 2 个 UART 连接到芯片,但设备没有响应是怎么回事?

    我有 CY7C65223D-32LTXI 芯片 2 个 UART 连接到芯片,但设备没有响应,RX1_LED 和 RX0_LED 一直亮着。我一直尝试在 Windows 和 Li
    发表于 08-04 07:56

    STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植)

    本教程详细介绍如何将STM32微控制器与ESP8266Wi-Fi模块连接到机智云平台,实现温湿度数据的上传与继电器的远程控制。通过此过程,您将学会如何配置机智云平台,烧录ESP826
    的头像 发表于 07-15 18:54 755次阅读
    STM32+esp8266<b class='flag-5'>连接</b>机智云,<b class='flag-5'>上传</b>温湿度数据并控制继电器开关(平台配置、代码生成、代码移植)

    无法固件刻录到PFlash的原因?怎么解决?

    。 据我所见,加载到 RAM 部分工作正常,当它开始闪存操作时,设备会冻结并需要电源循环,并且通常需要通过 miniwiggler 重新编程。刻录机功能通过链接脚本存储在 RAM 中,允许成功编程
    发表于 07-15 07:39

    是否可以保持与 SOM 的数据连接并将连接到 CYPD3177 的 CC 线路同时设置 USB 电压?

    我有一个应用程序,我必须将数据线连接到 SOM 单元进行 USB 高速连接,然后 CC 线路连接到
    发表于 05-27 08:04

    求助,关于FX3 ROM引导加载程序系统重启问题求解

    我们正在围绕 FX3 进行设计,在此过程中,我们发现我们的电路板和使用开发板(CYUSB3KIT-003)时都存在问题。 当我们 FX3 开发板连接到系统并执行系统重启时,就会出现此问题,一旦内核
    发表于 05-13 06:06

    S32K322能否V25 (2.5V) 连接到VREFH获得精密ADC基准电压?

    我能否 V25 (2.5V) 连接到 VREFH 获得精密 ADC 基准电压?
    发表于 04-07 06:37

    请问如何将DLP lightcrafter连接成为普通的投影仪使用?

    请问如何将DLP lightcrafter连接成为普通的投影仪使用? 通过mini HDMI连接到我的电脑后,电脑能显示一个叫LCr 4500的屏幕,但是lightcrafter不能显示屏幕内容,请问怎么操作,谢谢。
    发表于 02-21 09:43

    如何将ADS1278通过SPI与处理器连接?

    在设计电路时,由于采用ADS1278进行8通道同步采样,通过SPI接口与ARM微处理器的SPI接口进行连接,而ADS1278工作在Discrete模式下,请问专家如何将ADS1278通过SPI与处理器连接?此时DOUT1-8如
    发表于 02-07 07:31

    使用插件Excel连接到MySQL/MariaDB

    使用插件 Excel 连接到 MySQL/MariaDB 适用于 MySQL 的 Devart Excel 插件允许您将 Microsoft Excel 连接到 MySQL 或 MariaDB
    的头像 发表于 01-20 12:38 1142次阅读
    使用插件<b class='flag-5'>将</b>Excel<b class='flag-5'>连接到</b>MySQL/MariaDB

    EE-321:Blackfin处理器连接到AD7656 SAR ADC

    电子发烧友网站提供《EE-321:Blackfin处理器连接到AD7656 SAR ADC.pdf》资料免费下载
    发表于 01-06 16:04 0次下载
    EE-321:<b class='flag-5'>将</b>Blackfin处理器<b class='flag-5'>连接到</b>AD7656 SAR ADC

    EE-219:字符LCD面板连接到ADSP-21262 SHARC DSP

    电子发烧友网站提供《EE-219:字符LCD面板连接到ADSP-21262 SHARC DSP.pdf》资料免费下载
    发表于 01-05 10:10 0次下载
    EE-219:<b class='flag-5'>将</b>字符LCD面板<b class='flag-5'>连接到</b>ADSP-21262 SHARC DSP

    在实际的电气连接中,是直接Exposed Thermal Pad连接到AGND吗?

    Exposed Thermal Pad连接到AGND?有些芯片的Exposed Thermal Pad 数据手册上要求连接到VSS.
    发表于 12-24 06:04

    Stellaris引导加载程序用户指南

    电子发烧友网站提供《Stellaris引导加载程序用户指南.pdf》资料免费下载
    发表于 12-23 16:24 0次下载
    Stellaris<b class='flag-5'>引导</b>加载<b class='flag-5'>程序</b>用户指南