iic_sendbyte(Program_Data_IC_1);
这个是 iic_sendbyte(Program_Data_IC_1);吧
软件内是iic_sendbyte(Program_Data_IC_1) DebugLab 发表于 2024-11-26 15:56
应为
iic_sendbyte(Program_Data_IC_1);
吧
void dsp_init(void)
{
unsigned int i;
iic_start();
iic_sendbyte(0x8e);
iic_SlaveAck();
iic_sendbyte(PROGRAM_ADDR_IC_1>>8);
iic_SlaveAck();
iic_sendbyte(PROGRAM_ADDR_IC_1&0x00ff);
iic_SlaveAck();
for(i=0;i<PROGRAM_SIZE_IC_1;i++)
{
iic_sendbyte(Program_Data_IC_1);
iic_SlaveAck();
}
iic_stop();
} DebugLab 发表于 2024-11-26 15:54
1000多行对解决问题无意义的代码(已帮您删除),却没有被调用函数的函数体,I2C是如何实现的没有体现
工 ...
IIC通讯函数是正常的,单字节发送是OK的,其它的使用这路IIC通讯的芯片,板上已工作正常了,就是这个DSP的底层数据需要连续载入底层代码,就出现了现 在的这种问题{:smile:} zhw6102 发表于 2024-11-26 16:23
这个要怎么处理呢,这段函数我是从别的单片机移植过来的,在其它的单片机上是正常的 ...
unsigned int i;加上volatile:
volatile unsigned int i; jwd 发表于 2024-11-26 15:39
猜的,没有等到应答,卡在for那里了?你可以仿真看看
有应答,上面的单字节发送是OK的,就是连续载入数组数据时只发了一个字节,这段程序是我在别的MCU程序移植过来的,在别的MCU上是正常的{:smile:} 小坤 发表于 2024-11-26 16:23
iic_sendbyte(Program_Data_IC_1);
变成了指针,指向了这个 Program_Data_IC_1 地址,所以发第一个数据 ...
iic_start();
iic_sendbyte(DEVICE_ADDR_IC_1);
iic_SlaveAck();
iic_sendbyte(PROGRAM_ADDR_IC_1>>8);
iic_SlaveAck();`
iic_sendbyte(PROGRAM_ADDR_IC_1&0x00ff);
iic_SlaveAck();
for(i=0;i<PROGRAM_SIZE_IC_1;i++)
{
iic_sendbyte(Program_Data_IC_1);
iic_SlaveAck();
}
iic_stop(); 小坤 发表于 2024-11-26 16:23
iic_sendbyte(Program_Data_IC_1);
变成了指针,指向了这个 Program_Data_IC_1 地址,所以发第一个数据 ...
复制过来怎么不显示数组的呢,实际上是iic_sendbyte(Program_Data_IC_1); 5楼已经给出方法了 本帖最后由 Lkck8210 于 2024-11-27 16:20 编辑
zhw6102 发表于 2024-11-26 16:23
这个要怎么处理呢,这段函数我是从别的单片机移植过来的,在其它的单片机上是正常的 ...
有可能是你复制错了
因为iic_sendbyte(Program_Data_IC_1);
已经不符合代码逻辑了
假设iic_sendbyte定义了传参是指针
那就不需要for循环
用得上for循环就代表iic_sendbyte的传参是数值
所以解决方法如5楼所说
改为
iic_sendbyte(Program_Data_IC_1);
或者你把iic_sendbyte()函数的代码也贴出来看看
页:
1
[2]