要使用SEED-DEC138开发板上GPIO读取温度传感器DS18B20,但是由于此板子硬件电路上的GPIO口经过了一个芯片SN74LVTH16245A总线收发器进行了扩展。导致GPIO只能作为单向的输入或输出。由于与DS18B20之间需要双向的输入输出。我于是同时接到了两个GPIO口,比如GP0[1] GP0[2] 。GP0[1]能配置成输出,
GP0[2] 能配置成输入。当GP0[1]输出高电平,将总线拉高时,把GP0[2] 配置成输入模式,读取温度传感器发出的低电平,但是却读不到低电平。分析原因,不知是不是两个GPIO口不能同时对一个引脚进行输出和输入。那么该怎么去配置呢? 希望大家能给予一些建议。
noaming:
你好,OMAPL138的GPIO口,每个pin脚都可以单独的配置成输入或输出,互不影响。通过寄存器GPIO Direction Registers (DIRn)来配置。
noaming:
“同时接到了两个GPIO口,比如GP0[1] GP0[2] ”是什么意思呢,你的这部分电路是如何设计的?
li zhou2:
回复 noaming:
虽然GPIO口可以同时配置成输入和输出。但是此SEED-DEC138开发板在硬件电路上却把扩展的GPIO引脚固定成只能实现单向的传输。
GP0[1]是GPIO的bank 0中的1管脚,GP0[2]是GPIO的bank 0中的2管脚。电路设计上,我目前是直接把这两个引脚同时接到DS18B20上的一根数据线上。
但发现,并不能读到DS18B20传递的低电平。
noaming:
回复 li zhou2:
你的硬件电路这样连接肯定是错误的了,等于把两个GPIO的pin连接到了一起。
li zhou2:
回复 noaming:
那该怎么办呢??
noaming:
回复 li zhou2:
首先这样的硬件设计肯定不行的。
其次,我查了一下SN74LVTH16245A芯片,他是可以配置输入输出方向的。你如果要使用GPIO口写数据,就配置一下SN74LVTH16245A的方向;如果需要GPIO读数据,再配置一下SN74LVTH16245A的方向。
li zhou2:
回复 noaming:
你好,很谢谢 你! SN74LVTH16245A 可以通过配置其DIR来改变数据的输入和输出。但是此开发板的两个DIR引脚已经都被连接到高电平,两个OE都被连接到了地。其实我们不能对其进行配置了。那么又该怎么办呢?
noaming:
回复 li zhou2:
这样的话,你是否考虑一下不通过SN74LVTH16245A,而是直接GPIO飞线连接到你的温度传感器上来操作。
li zhou2:
回复 noaming:
嗯,这样可能就需要改动板子上的硬件电路是吧,由于gpio引脚是被不同的功能复用的,我担心是否会影响到与该GPIO口共用的其他功能的使用。其实我们有一个想法是这样的:还是使用两个GPIO口直接与温度传感器的一根数据线相连,使用GP0[1]发射高低电平给传感器,这是没问题的,当要接收温度传感器的数据时,就把GP0[1]设置成高阻状态,然后从GP0[2]口读取温度传感器的数据,尝试了一下,发现依然读不到低电平。。。。