|
本帖最后由 伸手不及放手为空 于 2018-1-15 10:49 编辑 目前使用一款MCP4728芯片,但他只有4个通道,而我需要扩展到8通道,也就是要在添加一个芯片,此时便需要对其中一片重写地址。 如下方图所示,需要在其第2字节第8位之后和ACK之前,将LDAC置0 那么现在的问题是倘若程序为: //上方程序省略 while(!I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); I2C_SendData(0x61); //第2字节 GPIO_WriteLow(GPIOC,GPIO_PIN_3); while(!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)); //停留此处,不再向下执行 I2C_SendData(0x66);//第3字节 //下方程序省略 那么第2字节数据发完后,将LDAC引脚置0,此时其ACK便会被影响,程序卡住。若GPIO_WriteLow(GPIOC,GPIO_PIN_3);这一句不写程序正常向下执行。请问有什么办法能使发送完第8位数据后,同时LDAC置0,而不影响ACK。 望大神们能指点一二。
|
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
微信公众号
手机版
现在有个问题,你的“I2C_SendData(0x61); //第2字节”,这行程序执行后,到了第几位了?
LDAC必须到第8位正脉冲结束之后,并且在第9位的ACK位时钟拉高之前,由高置低才行。
建议用示波器看一下真实波形,到底LDAC在哪位来的?
可以先读一下地址看能不能行,如果读不行的话,写肯定更不行了。
这是从Microchip官网下载的手册
评分
查看全部评分
读地址,获取数据
写地址,写地址数据;
评分
查看全部评分
建议使用示波器,看看波形是否正确。
评分
查看全部评分