260|3

178

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

[Follow me第二季第3期] [扩展任务] DAC输出不同波形,FLASH保存和读取历史数据 [复制链接]

 

简介


拓展任务的要求的要求设计一个类似信号发生器功能的例程。可在示例程序上修改。通过命令或按键,设置DAC输出波形,可通过flash存储历史波形等信息。 那么对于这个任务一共分为三点.即 (1) 命令或者按键 (2)DAC输出 (3)Flash的读取和写入。

 

对于命令或者按键我们已经在进阶任务和入门任务中完成了。所以可以参考之前的实现逻辑。 对于DAC的输出,我们已经在基础任务中正确实现了。 而对于(3)Flash的读取和写入,我们则可以参考基础任务中的SPI写和读的相关函数。

 

 

实现过程


 

1 - 菜单功能实现,设计菜单和子菜单。

 

 

子菜单

 

 

 

2- 生成正弦波和三角波,和DAC输出函数

 

 

DAC输出生成后的波形数据

 

 

3 - QSPI Flash的读和写,操作。在这里非常感谢活动交流群内的各位大佬提供的帮助, 以及同期参加活动的小伙伴们, 我这里在操作QSPI的时候没有成功,后经过他们的帮助后成功的从QSPI读取到了数据。

void saveToFlash(uint8_t *buffer)
{
    fsp_err_t err = FSP_SUCCESS;
    uint32_t page_write_count = 0;
    uint8_t *p_mem_addr = (uint8_t*) QSPI_DEVICE_START_ADDRESS;
    spi_flash_protocol_t current_spi_mode;

    p_mem_addr = (uint8_t*) QSPI_DEVICE_START_ADDRESS;

    err = qpi_init ();
    if (FSP_SUCCESS == err)
    {
        /* The comms mode has changed. So if recovering, this new mode required */
        current_spi_mode = g_qspi_cfg.spi_protocol;
    }
    /* 擦除 QSPI 的指定扇区 */
    err = R_QSPI_Erase (&g_qspi_ctrl, p_mem_addr, 4096U);
    if (FSP_SUCCESS != err)
    {
        sprintf (s_print_buffer, "Failed to erase QSPI flash\r\n");
        print_to_console ((void*) s_print_buffer);
        return;
    }
    /* 等待擦除完成 */
    err = get_flash_status ();
    if (FSP_SUCCESS != err)
    {
        sprintf (s_print_buffer, "Failed to get flash status after erase\r\n");
        print_to_console ((void*) s_print_buffer);
        return;
    }

    err = R_QSPI_Write (&g_qspi_ctrl, &buffer[0], p_mem_addr, 1);
    if (FSP_SUCCESS != err)
    {
        sprintf (s_print_buffer, "Failed to write data to QSPI flash\r\n");
        print_to_console ((void*) s_print_buffer);
    }
    else
    {
        err = get_flash_status ();
        if (FSP_SUCCESS != err)
        {
            sprintf (s_print_buffer, "Failed to get flash status after write\r\n");
            print_to_console ((void*) s_print_buffer);
        }
    }
    deinit_qspi (current_spi_mode);
}

 

 

当用户输入1 或者 2 的时候,那么将当前的波形信息保存到Flash里

 

 

当用户输入3的时候使能输出。

 

 

 

视频效果展示

2024-12-11 22-04-00

 

最新回复

发几个好帖子,拿了奖去换个虚拟示波器,应该不难!   详情 回复 发表于 2024-12-14 08:45
点赞 关注
 
 

回复
举报

6954

帖子

2

TA的资源

版主

沙发
 

要是有个示波器看DAC波形,可能会更直接~

点评

哎,哪里有示波器。 家境贫寒  详情 回复 发表于 2024-12-12 23:29
 
 
 

回复

178

帖子

4

TA的资源

纯净的硅(初级)

板凳
 
wangerxian 发表于 2024-12-12 16:11 要是有个示波器看DAC波形,可能会更直接~

哎,哪里有示波器。 家境贫寒

点评

发几个好帖子,拿了奖去换个虚拟示波器,应该不难!  详情 回复 发表于 2024-12-14 08:45
 
 
 

回复

6873

帖子

11

TA的资源

版主

4
 
御坂10032号 发表于 2024-12-12 23:29 哎,哪里有示波器。 家境贫寒

发几个好帖子,拿了奖去换个虚拟示波器,应该不难!

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表