STM8L152模拟IIC程序(6)

2025-06-23

346. 347. { 348.

349. return I2C_ERR; 350. 351. } 352.

353.

354. I2C_Start(); /*重启I2C*/

355.

356. I2CAck = SendByte(rdDAdr); /*发读器件地址*/ 357.

358. if(!I2CAck) 359. 360. { 361.

362. return I2C_ERR; 363. 364. }

365.

366. _delay_5us(5); 367.

368. for(i=0;i

372. *(pRdDat+i) = RcvByte(); 373.

374. I2C_Rack(); 375.

376. }

377.

378. if(i==num-1) 379. 380. { 381.

382. *(pRdDat+i) = RcvByte(); 383.

384. I2C_nAck(); 385. 386. } 387.

388. I2C_Stop();

389.

390. return I2C_CRR; 391. 392. } 393. 394.

395. /******************************************************* 396.

397. 写N个数据,前N-1个要应答,最后一个不要应答 398.

399. wrDAdr: write device-address 写器件地址?? 400.

401. wordAdr: word address 写数据的寄存器地址? 402.

403. *pWrDat: p->write data 写数据指针 404.

405. num: number 需要写入的数据个数

406.

407. *******************************************************/ 408.

409. bool I2C_Write(UCHAR wrDAdr,UCHAR wordAdr,UCHAR *pWrDat,UCHAR num) 410. 411. { 412.

413. bool I2CAck; 414.

415. unsigned char i;

416. 417.

418. I2C_Start(); /*启动I2C*/

419.

420. _delay_5us(5); 421.

422. I2CAck = SendByte(wrDAdr); /*发写器件地址*/ 423.

424. if(!I2CAck) 425. 426. { 427.

428. return I2C_ERR; 429. 430. } 431.

432. I2CAck = SendByte(wordAdr); /*发要写的寄存器地址*/ 433.

434. if(!I2CAck) 435. 436. { 437.

438. return I2C_ERR; 439.

440. } 441.

442. for(i=0;i

446. I2CAck = SendByte(*(pWrDat+i)); 447.

448. if(!I2CAck) 449.

450. {return I2C_ERR;} 451. 452. } 453.

454. if(i==num-1)

455. 456. { 457.

458. I2CAck = SendByte(*(pWrDat+num-1)); 459.

460. if(!I2CAck) 461.

462. {return I2C_ERR;} 463. 464. } 465.

466. I2C_Stop(); 467.

468. return I2CAck; 469. 470. }

以上代码不知为何读出数据不正确,用示波器看我发送的器件地址,寄存器地址这些都对,器件输出的数据是0xFF,程序中读出返回的数据是0x00,弄了一天没对相当郁闷,同志们指点下

终于搞定了, 应该跟我的器件有关,另外if(GPIO_ReadInputPin(I2C_PORT,I2CSDA) == 1)这种不能写成==1,要直接写成if(GPIO_ReadInputPin(I2C_PORT,I2CSDA)),太郁闷了


STM8L152模拟IIC程序(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:哈大冬季施工措施

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219