LM71使用读取问题
时间:10-02
整理:3721RD
点击:
在使用LM71时,我写的驱动测试时发现只能读取到全0或者全1(开始的几次测试读到的都是全0,后来的测试中不知道为什么都读到的是全1),我不是很理解为什么我的代码不能正常运行,难道是我时序问题?
以下是我的部分代码:
u8 LM71_ReadByte()
{
GPIO_PinModeSet(LM71_Port, LM71_SIO, gpioModeInputPullFilter, 0);
u8 i = 0;
u8 tmp = 0;
u8 SDI;
for (i = 0; i < 8; ++i) {
GPIO_PinOutSet(LM71_Port, LM71_SC); //上升沿
delay(100);
SDI = (u8)GPIO_PinInGet(LM71_Port, LM71_SIO);
tmp <<= 1;
if (SDI) {
++tmp;
}
GPIO_PinOutClear(LM71_Port, LM71_SC); //下降沿
delay(100);
}
return tmp;
}
读到的全是0或全是1,是不是寄存器就没写成功呢
主机的时序不是先读后写么?
找到原因了,应该是我没有满足转换时间的条件,把转换时延变长就能正常输出了。
原因应该是我没有满足在LM71传输数据之前需要一定的转换时间这个条件,把这个转换时延边长就解决了。