找回密码
 立即注册
楼主: zhw6102

麻烦帮我看下这个多字节数组的载入问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-11-26 14:45:00
已绑定手机

1

主题

8

回帖

23

积分

新手上路

积分
23
发表于 2024-11-26 16:24:49 | 显示全部楼层
so*** 发表于 2024-11-26 15:56
iic_sendbyte(Program_Data_IC_1);
这个是 iic_sendbyte(Program_Data_IC_1);吧

软件内是iic_sendbyte(Program_Data_IC_1)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-11-26 14:45:00
已绑定手机

1

主题

8

回帖

23

积分

新手上路

积分
23
发表于 2024-11-26 16:25:53 | 显示全部楼层
Debu*** 发表于 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();             
}  
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-11-26 14:45:00
已绑定手机

1

主题

8

回帖

23

积分

新手上路

积分
23
发表于 2024-11-26 16:29:35 | 显示全部楼层
Debu*** 发表于 2024-11-26 15:54
1000多行对解决问题无意义的代码(已帮您删除),却没有被调用函数的函数体,I2C是如何实现的没有体现
工 ...

IIC通讯函数是正常的,单字节发送是OK的,其它的使用这路IIC通讯的芯片,板上已工作正常了,就是这个DSP的底层数据需要连续载入底层代码,就出现了现 在的这种问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-05-02 10:18:47

24

主题

515

回帖

990

积分

荣誉版主

积分
990
发表于 2024-11-26 16:31:44 | 显示全部楼层
zhw6*** 发表于 2024-11-26 16:23
这个要怎么处理呢,这段函数我是从别的单片机移植过来的,在其它的单片机上是正常的 ...

unsigned int i;  加上volatile:
volatile unsigned int i;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-11-26 14:45:00
已绑定手机

1

主题

8

回帖

23

积分

新手上路

积分
23
发表于 2024-11-26 16:31:54 | 显示全部楼层
jw*** 发表于 2024-11-26 15:39
猜的,没有等到应答,卡在for那里了?你可以仿真看看

有应答,上面的单字节发送是OK的,就是连续载入数组数据时只发了一个字节,这段程序是我在别的MCU程序移植过来的,在别的MCU上是正常的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-11-26 14:45:00
已绑定手机

1

主题

8

回帖

23

积分

新手上路

积分
23
发表于 2024-11-26 16:35:18 | 显示全部楼层
小*** 发表于 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();
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-11-26 14:45:00
已绑定手机

1

主题

8

回帖

23

积分

新手上路

积分
23
发表于 2024-11-26 16:36:45 | 显示全部楼层
小*** 发表于 2024-11-26 16:23
iic_sendbyte(Program_Data_IC_1);

变成了指针,指向了这个 Program_Data_IC_1 地址,所以发第一个数据 ...

复制过来怎么不显示数组的呢,实际上是iic_sendbyte(Program_Data_IC_1);
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-04-26 15:51:33
已绑定手机

27

主题

301

回帖

822

积分

高级会员

积分
822
发表于 2024-11-26 17:06:57 | 显示全部楼层
5楼已经给出方法了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-11-27 10:10:45 | 显示全部楼层
本帖最后由 Lkck8210 于 2024-11-27 16:20 编辑
zhw6*** 发表于 2024-11-26 16:23
这个要怎么处理呢,这段函数我是从别的单片机移植过来的,在其它的单片机上是正常的 ...

有可能是你复制错了
因为
  1. iic_sendbyte(Program_Data_IC_1);
复制代码

已经不符合代码逻辑了
假设iic_sendbyte定义了传参是指针
那就不需要for循环
用得上for循环就代表iic_sendbyte的传参是数值
所以解决方法如5楼所说
改为
  1. iic_sendbyte(Program_Data_IC_1[i]);
复制代码


或者你把iic_sendbyte()函数的代码也贴出来看看
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 13:27 , Processed in 0.124548 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表