【沁恒 CH32V208 开发板免费试用】+ 外部存储器件的读写测试 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

【沁恒 CH32V208 开发板免费试用】+ 外部存储器件的读写测试

CH32V208开发板提供了对两类外部存储器件的支持,即AT24CXX系列和W25QXX系列。

由于在开发板上并没有提供这两类器件,因此在测试时是以外挂模块的形式来进行。

1)AT24C02测试

AT24C02是一种以I2C接口方式工作的存储器件,受容量的限制它多原来存储相应的工作参数,以实现掉电不丢失的作用。

AT24C02与开发板的连接关系为:

SCL----PB10

SDA---PB11

具体的测试电路连接如图1所示:

image.png

图1 AT24C02测试电路

相应的测试主程序为:

const u8 TEXT_Buffer[]={"CH32V208 I2C TEST"};int main(void)
{
         u8 data[SIZE];
         Delay_Init();
         USART_Printf_Init(115200);
         printf("SystemClk:%d\\r\\n",SystemCoreClock);
         AT24CXX_Init();
         printf("Start Write 24Cxx....\\r\\n");
         AT24CXX_Write(100,(u8*)TEXT_Buffer,SIZE);
         printf("24Cxx Write Sucess!\\r\\n");
         Delay_Ms(500);
         printf("Start Read 24Cxx....\\r\\n");
         AT24CXX_Read(100,data,SIZE);
         printf("The Data Readed Is:\\r\\n");
         printf("%s\\r\\n", data);
         while(1);
}

其测试过程为:AT24CXX初始化--->将数组的内容写入器件--->读取器件写入区间的数据--->输出读取数据

在连接串口的情况下,其测试结果如图2所示,说明读写过程正确。

image.png

图2 测试结果

2)W25Q16测试

W25Q16是一种以SPI接口方式工作的存储器件,其容量相对比较大,可用来存储工作数据或图像数据等。

W25Q16与开发板的连接关系为:

CS ----PA2

DO ---- PA6

WP ----3.3V

DI ---- PA7

CLK ---- PA5

HOLD ----3.3V

具体的测试电路连接如图3所示:

image.png

图3 W25Q16测试电路

其测试过程为: 初始化处理--->读取存储器ID--->识别器件类型--->擦除指定扇区的数据--->读取指定驱动的数据--->将数组的内容写入器件--->读取器件写入区间的数据--->输出读取数据

相应的测试主程序为:

u8 SPI_FLASH_BUF[4096];
const u8 TEXT_Buf[] = {"CH32V208 SPI FLASH W25Qxx"};
#define SIZE    sizeof(TEXT_Buf)
int main(void)
{
    u8 datap[SIZE];
    u16 Flash_Model;
    Delay_Init();
    USART_Printf_Init(115200);
    printf("SystemClk:%d\\r\\n",
    SystemCoreClock);
    SPI_Flash_Init();
    Flash_Model = SPI_Flash_ReadID();
    switch(Flash_Model)
    {
            case W25Q80:
            printf("W25Q80 OK!\\r\\n");
            break;
            case W25Q16:
            printf("W25Q16 OK!\\r\\n");
            break;
            case W25Q32:
            printf("W25Q32 OK!\\r\\n");
            break;
            case W25Q64:           
            printf("W25Q64 OK!\\r\\n");
            break;
            case W25Q128:
            printf("W25Q128 OK!\\r\\n");
            break;
            default:
            printf("Fail!\\r\\n");
            break;
    }
    printf("Start Erase W25Qxx....\\r\\n");
    SPI_Flash_Erase_Sector(0);
    printf("W25Qxx Erase Finished!\\r\\n");
    Delay_Ms(500);
    printf("Start Read W25Qxx....\\r\\n");
    SPI_Flash_Read(datap, 0x0, SIZE);
    printf("%s\\r\\n", datap);
    Delay_Ms(500);
    printf("Start Write W25Qxx....\\r\\n");
    SPI_Flash_Write((u8 *)TEXT_Buf, 0, SIZE);
    printf("W25Qxx Write Finished!\\r\\n");
    Delay_Ms(500);
    printf("Start Read W25Qxx....\\r\\n");
    SPI_Flash_Read(datap, 0x0, SIZE);
    printf("%s\\r\\n", datap);
    while(1);
}

在连接串口的情况下,其测试结果如图4所示,说明读写过程正确。
image.png

图4 测试结果

由于CH32V208只有128KB的flash,故在显示一幅图片时往往无法将图片数据嵌入到程序中,此时若无其它存储介质的帮助,使用W25Q16来存储图像数据还是比较合适的。

回帖(1)

华仔stm32

2023-4-22 21:13:28
李老师的测试那是咱们学习的好榜样呀,能不能提个建,把工程附件上传,让大学习一下。

更多回帖

×
发帖