BQ26501的读写是从低位开始的还是高位?
谁用过BQ26501这个芯片,datasheet了好像没说读写位的事,谁用过帮我看看,顺便求下HDQ的编写源码,谢谢了。。。。。
求大神啊~~~~急急急~~~~~~~
虽然不是大神,关于你的问题 还是据我所知道的信息给你一些资源参考,希望能够对你有帮助
关于HDQ通讯的问题,首先建议你参考论坛中提供的HDQ通讯基础资料
http://www.deyisupport.com/question_answer/analog/battery_management/f/35/t/14046.aspx
参考代码的部分请你参阅TI提供的430单片机与各种接口的gas gauge芯片通讯的参考代码(见链接中的zip文件,解压缩后参考430单片机与采用HDQ接口的gas gauge芯片通讯的代码)
http://www.ti.com.cn/analog/cn/docs/litabsmultiplefilelist.tsp?literatureNumber=slva413a&docCategoryId=1&familyId=412
刚看了下用430写的时序,发现跟我的时序差不多,但设置断点时仿真看到的值不对,不知道什么原因。求指点啊~~~~
void BQ26501_break(void) { BR; delay_us(50); B; delay_us(200); BR; delay_us(50); }
void BQ26501_WRBYT(unsigned char wdata) { unsigned char i; DWOUT(); delay_us(200); BQ26501_break(); HW0; delay_us(95); for(i=0;i<8;i++) { if(wdata&0x01) { HW1; delay_us(20); } else { HW0; delay_us(100); } wdata>>=0x01; } HW1; delay_us(200); }
void BQ26501_WRbyte(unsigned int data,unsigned char addr) { unsigned char i; BQ26501_WRBYT(0x80|addr); for(i=0;i<8;i++) { if(data&0x01) { HW1; delay_us(20); } else { HW0; delay_us(100); } delay_us(20); data>>=0x01; } HW1; delay_us(200); }
unsigned char BQ26501_RDbyte(unsigned int addr) { unsigned char i; unsigned char rdata; BQ26501_WRBYT(0xfe&addr); // DWOUT(); // delay_us(200); // HW1; // delay_us(200); DWIN(); for(i=0;i<8;i++) { rdata>>=0x01; if(DW) { rdata|=0x01; delay_us(40); } else delay_us(100); } delay_us(200); DWOUT(); return(rdata); }
void Temp(void) { unsigned char H,L,H0,H1,L0,L1; L = BQ26501_RDbyte(0x06); delay_us(100); H = BQ26501_RDbyte(0x07); delay_us(100); /* H1 = BQ26501_RDbyte(0x06); delay_us(100); L1 = BQ26501_RDbyte(0x07); delay_us(100); if(H1==H0) { H = H0; L = L0; } else { H = H1; L = L1; } delay_us(100); */ }
上面是源码,求大神指点帮我看看。急~~~~