viva_xin

  • 2024-04-26
  • 回复了主题帖: 【CH32X035体验】搭建开发环境

    Jacktang 发表于 2024-4-24 07:23 下载烧写程序是用什么方式呢 swd两线

  • 2024-04-22
  • 发表了主题帖: 【CH32X035体验】搭建开发环境

    这里首先下载官方推荐的IDE——“MounRiver Stdio”,然后是开发板的BSP压缩包“CH32X035EVT.ZIP”,最后还需要下载工具对应的软件和驱动。   这次拿到的开发板型号是“CH32X05C-R0-1V2”,介绍如下:   下载工具型号是WCH-LinkE-R0-1V3,通过杜邦线和板子的SDI接口连接。 3V3 ---- VCC GND ---- GND SWDIO ---- PC18 SWCLK ---- PC19 打开BSP包中GPIO示例工程,“EVT\EXAM\GPIO\GPIO_Toggle”,快捷键“Ctrl + B”对工程进行编译,确保无误后便可以下载程序。 第一次下载会提示找不到下载工具,需要安装一下“WCH-LinkUtility.exe”,会同步将驱动程序安装完成,在设备管理器中会有WCH-LinkRV。 连接完成后,给开发板上电,快捷键F8进行程序下载。通过USB转串口,将开发板的PB10管脚与USB串口的RXD端相连,可以在串口终端看到打印的信息。 通过杜邦线,将开发板PA0管脚与LED1相连,可以看到LED来回闪烁。 至此,完成了开发环境的搭建,成功下载GPIO示例,测试了GPIO和串口功能。          

  • 2024-03-27
  • 回复了主题帖: 【入围名单】沁恒CH32X035 DIY

    个人信息无误,确认可以完成评测计划

  • 2024-03-05
  • 回复了主题帖: 国产Tang Primer 25K测评使用高云SDRAM的ip核驱动官方的SDRAM扩展板 碰到的问题

    可以做个实验,写入的数据直到busy被拉起来之前一直保持变化,然后看看实际读出来的结果如何。 再问一句,IP核的时序参数是官方给的吗?

  • 2024-02-04
  • 回复了主题帖: 【Sipeed Tang Primer 25K】基于软核Cortex M1的嵌入式探索——又是OLED模组

    fxyc87 发表于 2024-2-4 08:58 用了多少个le?看起来不错。 占的资源不多

  • 发表了主题帖: 【Sipeed Tang Primer 25K】基于软核Cortex M1的嵌入式探索——又是OLED模组

    本帖最后由 viva_xin 于 2024-2-4 00:27 编辑 Tang20K使用的FPGA型号支持高云官方定制的Cortex-M1软核CPU——“Gowin_EMPU_M1” 打开这个IP可以进行定制,如下图所示。 双击,可以打开CPU Core的设置,在一般设置中可以选择中断数量和外部中断的支持,操作系统的支持,硬件乘法器等。 可以开启在线调试,支持JTAG和Serial Wire两种模式。 最后一项是内存的选择,ITCM和DTCM都可以选择内部存储或者外部存储。 我这里都选择为内部存储,大小均为32KB,这个大小还是比较富裕的。 我这里使用初始化的itcm文件,所以把Initialize勾上,并给出itcm文件的路径 然后是外设的选择,这里我使用GPIO、UART、Timer以及SPI。   最后点击OK,生成IP。   例化这个CPU IP,需要给一个时钟,并且将管脚映射和Tang 20K对应上。   将硬件CPU设置好后,下一步就是进行软件C程序的开发。   由于是ARM Cortex M1的内核,可以直接使用MDK进行开发。   高云官网可以找到对应的CPU和外设驱动文件,这里在此基础上写一个SPI驱动的OLED的APP,工程会附在结尾。   从视频中可以看出OLED正常进行显示和内容的刷新,表明CPU和外设正常运行。   [localvideo]cb5806eb49e6d5463e1ed595d911ff43[/localvideo]   下一步尝试将LVGL移植到此系统中。  

  • 2024-01-21
  • 发表了主题帖: 【Sipeed Tang Primer 25K】点亮0.96 OLED

    SPI作为低速串行总线,在嵌入式领域的应用十分广泛。不仅占用的管脚数少,而且支持较高的传输速率(达到10Mmps级别)。   这里使用Verilog编写了一个SPI master,并且配合内部RAM,完成一个0.96寸OLED的驱动。   OLED的驱动分为两个部分,第一部分是OLED的配置,第二部分是数据的刷新。   OLED的配置只需上电后完成一次即可,一共需要配置25个寄存器,通过状态机从头到尾读取一遍即可。   整个屏幕共分成8个Page,每个Page中包含了128个8bit字段,所以需要8*128*8bit的RAM来充当显存。   而屏幕显示的刷新是通过状态机循环遍历整个坐标(Page,字段)来完成显存到SPI的输出完成的。   [localvideo]b6fd16e4f09330e102ce51b664d9b334[/localvideo]   后续会探索如何丰富显存内容,最后附上工程代码。  

  • 2024-01-13
  • 发表了主题帖: 【Sipeed Tang Primer 25K】探索HDMI显示

    本帖最后由 viva_xin 于 2024-1-13 16:53 编辑 这篇来测试一下Pmod DVI/HDMI模块。 在Sipeed官方提供的GitHub仓库中有一个HDMI显示的例子,可以直接拿来作为学习参考,我也会把代码贴在后面。   在物理层,HDMI采用TMDS技术,通过3对差分接口串行的将图像数据以及行场同步信号传输给到显示器,另外还需要额外1对差分接口传输图像的时钟信号。 可以看见Pmod还将HDMI接口控制信号扩展出来了包括IIC,CEC和HPD等接口,方便实现更全的HDMI功能。 这里先不关心这些控制信号。   FPGA内部通过硬核serdes模块完成并串转换,在程序中需要调用原语来完成例化。这里使用的是“OSER10”,它的功能可以将10bit的并行数据以5倍频时钟上下沿都有效的速率串行输出。 OSER10 tmds_serdes [2:0] ( .Q(tmds_d), .D0(tmds_d0), .D1(tmds_d1), .D2(tmds_d2), .D3(tmds_d3), .D4(tmds_d4), .D5(tmds_d5), .D6(tmds_d6), .D7(tmds_d7), .D8(tmds_d8), .D9(tmds_d9), .PCLK(clk_pixel), .FCLK(clk_5x_pixel), .RESET(~clk_pixel_resetn) ); 最后还需要在约束文件中需要设置好P/N端的线序,并且约束IO_TYPE为"LVCMOS33D",就可以让FPGA实现TMDS的传输。 IO_LOC "tmds_clk_p_0" C11,C10; IO_PORT "tmds_clk_p_0" IO_TYPE=LVCMOS33D PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; 图像数据RGB各个分量都是8bit,那么为何要使用“OSER10”,而不是“OSER8”呢,因为TMDS为了增加解码端的稳定性,采用了8b/10b的编码方式,通过加扰的方式保持高速传输时的直流平衡,弊端就是传输效率打了两折。程序中的svo_tmds模块就是完成8b/10b编码。   模块svo_tcard模拟了的内存video DMA模块,这个模块根据设定的分辨率产生一幅图像,并打包成axi stream接口送给后面模块。 module svo_tcard( input clk, resetn, output reg out_axis_tvalid, input out_axis_tready, output reg [SVO_BITS_PER_PIXEL-1:0] out_axis_tdata, output reg [0:0] out_axis_tuser ); 模块svo_enc相当于一个axi stream master,从svo_tcard中取出图像数据,并通过fifo进行缓存,最后把rgb数据以及行场同步信号按照tmds的顺序也打包成axi stream流送给svo_tmds完成8b10b编码。 最后看一下显示效果。  

最近访客

< 1/2 >

统计信息

已有80人来访过

  • 芯积分:365
  • 好友:--
  • 主题:5
  • 回复:10

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言