完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void I2CStart(void) //开始信号
[ CLK_H; DIO_H; //5us DELAY_US(6); DIO_L; ] void I2Cask(void) //ACK信号 [ EALLOW; GpioCtrlRegs.GPBDIR.bit.GPIO32=0;// input //GpioCtrlRegs.GPBPUD.bit.GPIO32=1;// Pullup's enabled EDIS; Uint16 timeout = 1; CLK_H; DELAY_US(4); CLK_L; while(SDA &&(timeout<=100)) [ timeout++; ] DELAY_US(4); CLK_L; ] //停止信号 void I2CStop(void) //停止信号 [ CLK_H; DIO_L; DELAY_US(4); DIO_H; ] //发送一个字节 void I2CWrByte(Uint16 oneByte) //写一个字节高位在前,低位在后 [ unsigned char i; EALLOW; GpioCtrlRegs.GPBDIR.bit.GPIO32=1;// output GpioCtrlRegs.GPBPUD.bit.GPIO32=1;// Pullup's enabled EDIS; CLK_L; DELAY_US(2); for(i=0;i<8;i++) [ if(oneByte & 0x0080) [ SDA=1; ] else [ SDA=0; ] oneByte = oneByte<<1; CLK_L; DELAY_US(4); CLK_H; DELAY_US(4); CLK_L; ] ] 51程序 void I2CStart(void) //开始信号 [ CLK_H; DIO_H; //5ms _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); DIO_L; ] void I2Cask(void) //ACK信号 [ uchar timeout = 1; CLK_H; _nop_(); _nop_(); _nop_(); CLK_L; while((DIO)&&(timeout<=100)) [ timeout++; ] _nop_(); _nop_(); _nop_(); CLK_L; ] void I2CStop(void) //停止信号 [ CLK_H; DIO_L; _nop_(); _nop_(); _nop_(); DIO_H; ] void I2CWrByte(uchar oneByte) //写一个字节高位在前,低位在后 [ uchar i; CLK_L; _nop_(); for(i=0;i<8;i++) [ oneByte = oneByte<<1; DIO = CY; CLK_L; _nop_(); _nop_(); _nop_(); CLK_H; _nop_(); _nop_(); _nop_(); CLK_L; ] ] 按照51单片机修改的DSP程序,可是为什么时序不对呢,响应信号中SDA一直为高,请问该怎么修改?? |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
501 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
372 浏览 1 评论
936 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2107 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3854 浏览 4 评论
CC3100BOOST使用CC3200lunchXL进行烧录
885浏览 2评论
127浏览 2评论
162浏览 2评论
138浏览 2评论
167浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-18 04:14 , Processed in 0.664991 second(s), Total 53, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号