打印
[技术求助]

读出来的都是FF

[复制链接]
338|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuhany|  楼主 | 2019-11-9 11:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在学习hdq协议,在用bq26500读的时候为什么读出来的都是FF?以下是我的读的程序
unsigned char read_hdq(unsigned char addr)
{
unsigned int i,j=0;
unsigned char out=0;
   
   HDQBreak();
    HDQ_SETOUT;
   write_byte(addr|0x7F);
   delay_us(300);
   HDQ_SETIN;//读取数据
   for(i=0;i<8;i++)
   {
   delay_us(90);
   if(P3IN&BIT0) out|=0x80;
   if(i<7) out=out>>1;
   delay_us(100);
   }
   return out;
}

使用特权

评论回复

相关帖子

沙发
jiajs| | 2019-11-9 11:59 | 只看该作者
由于HDQ通信是靠高低电平的时间宽度来代表0和1,对时序要求高,通信过程要将中断关闭,防止被打断引起时序错乱导致通信出错。

使用特权

评论回复
板凳
dengdc| | 2019-11-9 12:02 | 只看该作者
你用什么做的,是用fpga还是普通单片机的gpio模拟的

注意不要使用中断,还有用示波器看看你发的波形时序,是否正确

使用特权

评论回复
地板
wuhany|  楼主 | 2019-11-9 12:04 | 只看该作者
我用430了做的。没有用中断也没有用GPIO。。。。

使用特权

评论回复
5
heweibig| | 2019-11-10 16:29 | 只看该作者

我用的是DSP  5509A的GPIO模拟HDQ与BQ26220通信,为什么只能读出高4位啊,纠结

使用特权

评论回复
6
jiajs| | 2019-11-10 16:34 | 只看该作者

不用多想,肯定时序问题。仔细对照手册玩。

使用特权

评论回复
7
jiahy| | 2019-11-10 16:38 | 只看该作者

为什么读出来的都是FF?
除了楼上几位说的问题,我觉得还得特别查一下芯片有没有工作了,因为如果时序问题,可能是读错,只要有数据发出,就不能总是一个低电平也读不到。

使用特权

评论回复
8
lizye| | 2019-11-10 16:41 | 只看该作者
这个是需要注意读取的延时的吧,每一个高电平的都会有一定的时间的吧。

使用特权

评论回复
9
shimx| | 2019-11-10 16:44 | 只看该作者
注意电平信号的宽窄的啦。。读取的时候就注意时间的。。

使用特权

评论回复
10
wuhany|  楼主 | 2019-11-10 16:47 | 只看该作者
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
11
airwill| | 2019-11-13 21:58 | 只看该作者
示波器查一下波形吧, 估计根本就没有响应

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝