Board logo

标题: 向版主请教56f8013 [打印本页]

作者: cddyzfc    时间: 2008-3-12 09:30     标题: 向版主请教56f8013

我在用code warrior 的processor expert 开发IIC通讯程序时,生成的读写程序每次都写两个字节,包括器件地址,IIC通讯要求,是写器件地址后写存储地址再写要存储的数据,如果两次调用写子程序,器件地址写两次,无法正常写进去,急呀!请指点
作者: strongchen    时间: 2008-3-12 10:35

不知道你的写子程序每次只能传送一个数据字节,还是能传送多个字节。不管怎样,都需要从机的配合,根据发送字节数产生应答信号,这样才能正确地通讯。
作者: cddyzfc    时间: 2008-3-12 11:22

我用processor expert生成的子程序byte F24C04_SendChar(byte Chr)每次能传送两个字节,我用示波器看SDA和SCL的波形,每执行一次F24C04_SendChar(byte Chr)子程序,可以看到18各脉冲,两个字节,而且每次第一个字节都是器件地址0xA0,第二个字节是Chr。这样我第一次Chr是存储地址,第二次Chr是数据,结果可以看到发送了四个字节即: 0xA0,Chr(第一个), 0xA0,Chr(第二个),这样由于每次F24C04_SendChar(byte Chr)子程序,都先发送0xA0,数据无法正确写入。
作者: strongchen    时间: 2008-3-12 11:58

你的IIC从机是什么,需要怎样的通讯格式?
作者: cddyzfc    时间: 2008-3-12 12:47

从机是24C02
作者: strongchen    时间: 2008-3-12 14:03

你的PE不能生成SendBlock函数吗?那可能是licnese的问题。也许你需要自己在SendChar函数的基础上修改。
作者: cddyzfc    时间: 2008-3-12 14:49

可以生成,我的英文水平不高在byte F24C04_SendBlock(void* Ptr,word Siz,word *Snt)中void* Ptr,word Siz,word *Snt三个参数各代表什么,如何定义?谢谢

作者: strongchen    时间: 2008-3-12 15:31

*Ptr是指向要发送的数据块起始地址的指针;Siz是数据块的大小;*Snt是实际发送的字节数的返回地址。
作者: cddyzfc    时间: 2008-3-12 21:12

如果我要将unsigned char data[2][2]={250,100,5,7};这个数组存到24C02中02开始的地址中,Siz是4,*Ptr是&data[0][0],*Snt是02吗?对*Snt我有点不太理解

如果我执行下面的程序会是什么结果

unsigned char data[2][2]={250,100,5,7};

ward *a=2;

ic_SendBlock(&data[0][0],4,a) 

[此贴子已经被作者于2008-3-12 21:12:54编辑过]


作者: strongchen    时间: 2008-3-13 10:33

你可以先运行一下试试看。
作者: leimei332    时间: 2011-1-6 10:57

[img][/img]学习中
作者: leimei332    时间: 2011-1-6 11:06

[img][/img]在学习中




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0