查看: 4082|回复: 3

[原创] 【KL27 mini Board 开发】+ SPI_FLASH测试

[复制链接]
  • TA的每日心情
    奋斗
    昨天 21:20
  • 签到天数: 2451 天

    连续签到: 7 天

    [LV.Master]伴坛终老

    17

    主题

    5340

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    11274
    最后登录
    2025-7-19
    发表于 2016-4-2 19:57:33 | 显示全部楼层 |阅读模式
    本帖最后由 超級稻草人 于 2016-4-19 21:17 编辑

    【KL27 mini Board 开发】+ SPI_FLASH测试

    开发工具
            - KL27mini
            - Keil 5.15
            - ST_Link
            
    实现功能:
            KL27 mini  开发板上SPI_FLASH测试,通过UART传输SPI_FLASH测试信息。

    SPI_FLASH测试程式

    01.jpg

    SPI_FLASH测试结果
    02.jpg
    补发代码:

    #include <stdio.h>
    #include <string.h>

    #include "gpio.h"
    #include "common.h"
    #include "lpuart.h"
    #include "spi.h"
    #include "w25qxx.h"


    static uint32_t xfer(uint8_t *buf_in, uint8_t *buf_out, uint32_t len, uint8_t cs_state)
    {
        uint8_t dummy_in;

        if(!buf_in)
            buf_in = &dummy_in;
        GPIO_WriteBit(HW_GPIOC, 4, 0);
        while(len--)
        {
            *buf_in = SPI_ReadWriteByte(HW_SPI0, *buf_out);
            if(buf_out)
                buf_out++;
            if(buf_in != &dummy_in)
                buf_in++;
        }
        GPIO_WriteBit(HW_GPIOC, 4, cs_state);
        return len;
    }

    static uint32_t _get_reamin(void)
    {
        return 0;
    }

    int cmd_spi(int argc, char * const argv[])
    {
        struct w25qxx_init_t init;

        init.delayms = DelayMs;
        init.get_reamin = _get_reamin;
        init.xfer = xfer;

        SPI_QuickInit(SPI0_SCK_PC05_MOSI_PC06_MISO_PC07, kSPI_CPOL1_CPHA1, 5*1000*1000);
        GPIO_QuickInit(HW_GPIOC, 4, kGPIO_Mode_OPP);
        GPIO_WriteBit(HW_GPIOC, 4, 1);



        uint32_t i, block, buf_size,j;
        static uint8_t buf[2*1024];
        struct w25qxx_attr_t w25qxx;

        w25qxx_init(&init);
        w25qxx_get_attr(&w25qxx);
        buf_size = sizeof(buf);
        block = w25qxx.size/buf_size;

        printf("%s found!\r\n", w25qxx.name);
        printf("test unit count:%d\r\n", block);

        /* erase chip */
        printf("erase all chips...\r\n");
        w25qxx_erase_chip();
        printf("erase complete\r\n");

        for(i=0; i<block; i++)
        {
            printf("verify addr:0x%X(%d)...\r\n", i*buf_size, i);
            for(j=0;j<sizeof(buf);j++)
            {
                buf[j] = j % 0xFF;
            }
            w25qxx_write(i*block, buf, buf_size);
            memset(buf, buf_size, 0);
            w25qxx_read(i*block, buf, buf_size);

            /* varify */
            for(j=0;j<sizeof(buf);j++)
            {
                if(buf[j] != (j%0xFF))
                {
                    printf("%d error\r\n", j);
                }
            }
        }
        return 0;
    }



    int main(void)
    {

        DelayInit();
        GPIO_QuickInit(HW_GPIOC, 3, kGPIO_Mode_OPP);
        LPUART_QuickInit(LPUART0_RX_D06_TX_D07, 115200);
        printf("SPI_FLASH demo\r\n");
        cmd_spi(0, NULL);

        while(1)
        {
            GPIO_ToggleBit(HW_GPIOC, 3);
            DelayMs(500);
        }
    }




    评分

    参与人数 1NXP金币 +10 收起 理由
    小七 + 10 打赏!

    查看全部评分

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2016-4-3 09:07:15 | 显示全部楼层
    学习一下先。。。 null - 副本 - 副本 - 副本.png null - 副本 - 副本 (2).png null - 副本 - 副本 (3).png null - 副本 - 副本.png null - 副本 (2) - 副本.png null - 副本 (2).png null - 副本 (3).png null - 副本 (4).png null - 副本.png null.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13124
    最后登录
    2019-1-27
    发表于 2016-4-18 16:11:03 | 显示全部楼层
    楼主,下次代码帖上来,截图看不清的啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-18 11:35
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    21

    主题

    945

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2001
    最后登录
    2020-6-8
    发表于 2016-4-20 10:43:09 | 显示全部楼层
    学习了,顶一个。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 04:36 , Processed in 0.094406 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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