我一直在尝试寻找TTL串行“标准”的良好描述,但运气不佳。我了解串行发送(TX)和接收(RX)线处于高电平空闲状态(在VCC处),并且当发送一位时它们会掉到地上。因此,它们与规范相反,“ 1”为高,“ 0”为低。
我不明白是谁负责保持高电平以及如何传输零。发送者是否将线路驱动到高电平和低电平?还是接收器将线拉高,发送器将线拉低(集电极开路)?
我一直在尝试寻找TTL串行“标准”的良好描述,但运气不佳。我了解串行发送(TX)和接收(RX)线处于高电平空闲状态(在VCC处),并且当发送一位时它们会掉到地上。因此,它们与规范相反,“ 1”为高,“ 0”为低。
我不明白是谁负责保持高电平以及如何传输零。发送者是否将线路驱动到高电平和低电平?还是接收器将线拉高,发送器将线拉低(集电极开路)?
Answers:
对于TTL串行,有两条单向数据线。每个都由发送者驱动,高低都驱动。0位用0V表示,1位用VCC表示。
接收器的引脚应设置为输入。
因此,对于微控制器发送一个字节(8-N-1无流控制),它可以执行以下操作:
#define BAUDRATE 9600
#define DELAY (SYS_CLK/BAUDRATE)
#define UART_BITBANG_OFF UART_BITBANG_PORT |= _BV(UART_BITBANG_PIN)
#define UART_BITBANG_ON UART_BITBANG_PORT &= ~ _BV(UART_BITBANG_PIN)
#define UART_BITBANG_BIT(bit) {if (bit) UART_BITBANG_ON; else UART_BITBANG_OFF; _delay_us(DELAY);}
void uart_bitbang_init(void)
{
UART_BITBANG_DDR &= ~ _BV(UART_BITBANG_PIN); // TX output
}
void uart_bitbang_putc(uint8_t c)
{
UART_BITBANG_BIT(1)
UART_BITBANG_BIT((c & 0x1) == 0);
UART_BITBANG_BIT((c & 0x2) == 0);
UART_BITBANG_BIT((c & 0x4) == 0);
UART_BITBANG_BIT((c & 0x8) == 0);
UART_BITBANG_BIT((c & 0x10) == 0);
UART_BITBANG_BIT((c & 0x20) == 0);
UART_BITBANG_BIT((c & 0x40) == 0);
UART_BITBANG_BIT((c & 0x80) == 0);
UART_BITBANG_BIT(0);
}
(此代码向后读取,因为它原本是用于反向TTL串行的)
当然,大多数MCU都有硬件UART,可以为您完成所有这些工作。
这是您在示波器上看到的内容:
https://www.pololu.com/docs/0J25/4.a
这是来自ladyada的一段精彩的视频,解释了连续剧:http : //www.adafruit.com/blog/2010/09/15/usb-serial-and-you-video-an-adafruit-after-school-special/
您不会说太多话,但是“ idle high”表示您的意思是UART。UART 与线收发器进行点对点连接,例如无处不在但过时的MAX232(如今有更好的解决方案)。微控制器和收发器之间的线路也将很短。如果要桥接的距离将在收发器之间。
控制器的输出为推挽式。
P-MOSFET将提供高电平,N-MOSFET将提供低电平。其中之一必须是活动的,否则线路电平将浮动并且未定义(或由收发器中的负载定义)。两者都能够产生/吸收一定的电流,并将线路拉至电源轨,因此信号形状几乎是理想的。
如果确实是TTL,那将是不同的,如您所问(微控制器为HCMOS)。TTL输出高度不对称:它们只能提供很少的电流,通常为0.4mA。吸收电流正常,为8mA。如果线路具有高电容和高速度,则低电源电流可能会成为问题。低驱动电流意味着电容只会相对缓慢地充电,而上升沿将很慢,这可能会导致严重的信号失真。TTL从未用于此目的。
您的问题还可能涉及多点线路,其中有多个设备可以通话。在那种情况下,您将无法使用推挽输出:如果一个设备将线路驱动为高电平,而另一设备将线路驱动为低电平,则我们将发生短路。多点线路几乎总是使用上拉电阻来保持线路空闲为高。然后,只有低电平需要驱动线路,而不仅仅是推挽输出,我们只有N-MOSFET会有漏极开路。现在,该线路也被非对称驱动:上拉电阻只能提供很少的电流,而下拉FET可以将线路快速接地。因此,高速多点线路限制了上拉电阻。I2C就是一个例子。