【问题标题】:AVR Atmega8 Serial CommunicationAVR Atmega8 串行通信
【发布时间】:2015-11-08 21:11:27
【问题描述】:

在没有通过网络获得任何帮助并阅读了许多文章和教程之后,我发布了这个问题。我最终提出问题,希望得到指导。 急需帮助。

我想要什么: 1)我想建造一个遥控坦克。 2)基本上它不是由遥控器控制的,但我想用笔记本电脑控制。(我可以写一个c++或c#程序)。

我知道的: 1)我知道如何开发开发板。 (我想开发自己的,而不是使用 arduino) 2) 我非常了解 C++ 和汇编。 3) 我对 AVR 的 ALU、Memories(all 3)、Stack、Interrupts、IO Operations 很了解。 4) 我了解 SPI、RS232、UART 的工作原理。

问题:(我有很多问题,但最重要的是) 1) B/c 我做了我自己的董事会。我如何将我的程序(十六进制文件)传输到我的板上(我寻求实际和物理实现,而不是理论)(我知道 6 针 ISP,但不清楚实际实现) 2) 之后,我怎样才能在我的 AVR 和笔记本电脑上进行无线通信。(硬件设备?)(SPI、RS232、UART?)

主要困惑: 1) 我无法帮助自己区分或关联 SPI、RS232 和 UART。 我知道这些用于设备之间的串行通信,但是如何使用?(何时、为什么以及如何使用)(用于发送设备和接收设备的适当硬件)

须知: 1)我还没有开始制作我的电路板并对其进行编程,因为我认为我应该先学习所有内容,然后一口气完成。或者我应该开始实际工作,事情会自动变得更容易吗? 2)我从http://maxembedded.com/2013/09/serial-communication-introduction/学习了一个关于串行通信的教程系列,开始的5个主题留下了最后一个(I2C)。 我错过了什么吗?

我希望一切都清楚,等待一个好人的话。

注意:我已经很迷茫和迷茫了,所以我需要有经验的专家的指导。非常感谢。

我的董事会看起来像: http://www.robotplatform.com/howto/dev_board/schematic_l/38.jpg

【问题讨论】:

  • 在使用无线之前先尝试使用有线连接可能是值得的。

标签: serial-port communication avr uart spi


【解决方案1】:

1) 要将您的代码上传到 AVR 芯片,您可以使用 ISP 接口。这需要您连接至少 5 个引脚:SCK、MISO、MOSI、RESET、GND 和可选的 VCC(它用于控制或提供电压,但不是强制性的,如果您的电路板有自己的电源)。您只需将 6 针或 10 针 ISP 连接器连接到 CPU 的这些针脚即可。 要开始编程过程,您需要获得一些编程设备(USBasp、AVRISPmk2、STK500/600 等),另外,您可以使用 Arduino 板本身作为外部 AVR 芯片的 ISP 编程器,如下所示:http://www.instructables.com/id/Programming-an-ATTiny13A-using-Arduino-servo-int/ 每个编程器型号都需要它的兼容软件(例如 PonyProg),例如 STK500 和 AVRISP 程序可以直接从 Atmel Studio 中使用。 此外,您可以将 ISP 连接到 PC 的并行 (LPT) 端口,并使用专用软件上传固件,例如 uniprof

另一种上传软件的方法——制作你自己的bootloader——一个可以使用任何可用接口更新固件的小程序。

2) USART、SPI、I2C - 与外设通信的接口不同。 请注意 RS232 - 它是建立在 USART 之上的电子接口。 IE。您需要将 USART 逻辑电平信号转换为 RS232 电平的外部 IC。

每个接口都有自己的优点和缺点。并且通常选择使用哪个接口取决于外围设备支持哪个接口。

SPI - 高速通讯接口。一主多奴。它需要很多线:MISO(从主机到从机的数据)、MOSI(从从机到主机的数据)、SCK(时钟)——这三个对所有从机来说都是通用的。它还需要一个 SS(从机选择)——每个从机用一根 SS 线来确定当前正在通信的从机,它还设置数据包的边缘。

USART - 通用接口,用于两个芯片的通信。发送的每个字节都带有前面的起始位、可选的奇偶校验和后面的停止位。 IE。传输有四分之一的开销,但字节可以随时传输。

在同步和异步模式下工作。异步模式只需要 2 根线(RX 和 TX,不包括还需要的 GND)。该模式要求接收器和发射器同步,大多数情况下需要安装晶振。

同步模式以与异步相同的格式工作,但有额外的 XCK(时钟)线,用于确定在哪些时刻可以传输位。这允许提高传输速度并且不需要接收器的时间精度。同步模式很少使用。

I2C - 这是一条只有两条线的总线,允许许多主机和许多从机。利用上拉电阻实现有线与,有自己的算法来检测碰撞,编程比较复杂,传输速度有限。 通常由外围设备使用,例如加速度计、RTC 等。

AVR 芯片本身不支持无线通信,因此,要做到这一点,您需要使用一些外部无线芯片,例如蓝牙或 WiFi,有很多这样的模块(例如 ESP8266)。 AVR 芯片使用 USART 与它们通信,发送和接收简单的命令。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
相关资源
最近更新 更多