# osc_xy **Repository Path**: xxl1998/osc_xy ## Basic Information - **Project Name**: osc_xy - **Description**: STM32H743使用两路DAC在示波器XY模式下播放视频的代码,DAC+DMA+TIM - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 2 - **Created**: 2021-02-05 - **Last Updated**: 2023-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # osc_xy ## 介绍 STM32H743使用两路DAC在示波器XY模式下播放视频的代码,DAC+DMA+TIM。 当时距离截稿没几天了,代码写的比较随性,大家凑合看吧。 内存占用太高,这个后面可以优化一下。 ## 开发特性 使用了具有本人特色的寄存器开发方式,传统寄存器开发可读性差,但是使用官方头文件中定义的大量的宏,可以实现较好的可读性,具有优秀代码“无需注释”的部分特性,因为宏定义的名字就是寄存器名+功能说明。 使用了经过多次探索积累的DMA+Cache方案。针对DMA收发的不同特性,分配到不同的内存区域。因为DMA控制器不能访问DTCM,所以这些DMA缓冲区只能放在其他内存。DMA发送缓冲区由CPU写,DMA控制器读,放在D1域的512KB内存中。DMA接收缓冲区由DMA控制器写,CPU读,放在D2域中,由于CPU不知何时这块内存被DMA控制器更新了,所以这时候有两种策略:1、读之前更新cache;2、这块内存禁止cache。我采用的方案2,使用MPU将这块内存(整个D2域)保护起来,设置属性为禁止cache,由于CPU也不会经常去读,所以对cache性能影响不会很大。 ## 生成字库 ~~这个我忘了~~,下次更新 ## 其他特性 - 使用了FreeRTOS - 使用了双缓冲区 - 使用了部分正点原子的代码 ## 使用说明 PA4、PA5分别接示波器两个通道,开启示波器XY模式,调节电压的位置为-VREF/2(比如我的VREF是3V,两个通道电压就下移1.5V),使波形在中间。使用直流耦合调整波形位置比交流耦合出来的信号稳定(因为波形并不是随时都有的)。然后再微调示波器的横纵轴的分辨率,获得最佳效果。 ## 其他 1、为什么有些文件命名比较奇怪? 因为这个工程是从我的飞控工程阉割而来的。 2、能不能支持直接播放视频? 以后会支持的,直接播放TF卡中视频文件。