FA100EN

更新时间: 2023-10-26

PC机串口的RTS输出用来模拟I2C总线的SCL时钟信号;DTR输出模拟I2C总线的SDA输出数据信号;CTS输入用于接收SDA输入数据。PC机串口的RS232的高电平为15V,低电平为-15V;I2C总线的高电平为+5V,低电平为0V。因此,将PC串口的握手信号转换成I2C总线信号时需要进行相应的电平转换,PC机串口RS232电平与I2C总线TTL电平之间的转换是由电阻R1、R2和5.1V稳压管D1、D2实现的。

    当RTS输出+15V高电平时,由于电阻和稳压管的作用,SCL端电平被稳定在+5.1V;而当RTS输出-15V低电平时,由于二极管D2导通,SCL电平被钳位在-0.7V。这样,便实现了±15V的RS232电平到0~5VCMOS电平的转换;电阻同时也起着限流作用。DTR输出到SDA信号的电平转换也是同样的原理,而当SDA处于输入状态时,由于CMOS电平可以满足RS232电平的输入容限,因此无需进行电平转换。

    由于用PC机串口模拟I2C总线时仅仅用到了串口的握手信号,而没有用到串口的波特率、数据长度、奇偶校验等设置功能及输入/输出缓冲区的管理功能,本文直接采用Windows提供的API函数实现串口编程。串口的打开和关闭分别采用CreateFile函数和CloseHandle函数实现。RTS和DTR信号高低电平的控制由EscapeCommFunction函数将串口作为文件操作实现,调用该函数后程序要有一定时间的延时以实现通信波特率的控制。CTS的电平状态则由GetCommModemStatus函数查询得到。

 


上一篇:2D785592D78559G01

下一篇:CTI2501901C2501