查看: 1808|回复: 1

[资料] SPI适配器上位机底层函数使用代码

[复制链接]

该用户从未签到

发表于 2018-11-29 11:49:04 | 显示全部楼层 |阅读模式
分享到:
本程序用来读写测试25AA020A存储器,测试代码如下:
#include <stdio.h>
#include <Windows.h>
//定义SPI适配器底层函数的函数指针
typedef int(*SPI_Funtion)(char *in,char *out);
//定义存储器操作的命令
#define CMD_READ_DATA               0X03
#define CMD_PAGE_PROGRAM            0X02
#define CMD_WRITE_ENABLE            0X06
//数据存储区
unsigned char inString[10240];
unsigned char outString[10240];
//主函数
int main(void)
{
        // 加载DLL
        HINSTANCE hDLL;    //DLL句柄
        hDLL = LoadLibrary("VT_SPI_Driver.dll");
        //获取SPI初始化函数指针地址
        SPI_Funtion SPI_Init = (SPI_Funtion)GetProcAddress(hDLL,"VTIF_SPI_Init");
        //获取SPI写数据函数指针地址
        SPI_Funtion SPI_WriteData = (SPI_Funtion)GetProcAddress(hDLL,"VTIF_SPI_WriteData");
        //获取SPI读数据函数指针地址
        SPI_Funtion SPI_ReadData = (SPI_Funtion)GetProcAddress(hDLL,"VTIF_SPI_ReadData");
        //获取SPI写读数据函数指针地址
        SPI_Funtion SPI_WriteReadData = (SPI_Funtion)GetProcAddress(hDLL,"VTIF_SPI_WriteReadData");
        //获取SPI设备选择函数指针地址
        SPI_Funtion SPI_SelectDevice = (SPI_Funtion)GetProcAddress(hDLL,"VTIF_SPI_SelectDevice");
        //选择SPI适配器
        printf("选择SPI适配器\n");
        SPI_SelectDevice("0",(char*)outString);//选择SPI适配器
        printf("%s\n\n",outString);
        //初始化SPI适配器
        //数据格式为:“控制模式|时钟极性|时钟相位|主从模式|数据宽度|移位方向|片选极性|时钟频率”
        printf("初始化SPI适配器\n");
        SPI_Init("1|0|0|1|8|0|0|1000000",(char*)outString);//初始化SPI适配器
        printf("%s\n\n",outString);

        //控制SPI适配器写数据0x06(使能SPI存储器写命令)
        printf("控制SPI适配器写数据0x06(使能SPI存储器写命令)\n");
        SPI_WriteData("0x06",(char*)outString);
        printf("%s\n\n",outString);
        Sleep(1);

        //控制SPI适配器写数据(向SPI存储器写入数据,开头的两个字节为存储器控制命令)
        printf("控制SPI适配器写数据(向SPI存储器写入数据,开头的两个字节为存储器控制命令)\n");
        SPI_WriteData("0x02|0x00|20|21|22|23|24|25|26|27|28|29",(char*)outString);
        printf("%s\n\n",outString);
        Sleep(1);

        //控制SPI适配器从SPI存储器中读取10字节数据(开头两个字节为存储器控制命令)
        printf("控制SPI适配器从SPI存储器中读取10字节数据(开头两个字节为存储器控制命令)\n");
        SPI_WriteReadData("0x03|0x00|0x0A",(char*)outString);
        printf("%s\n\n",outString);
        Sleep(1);

        FreeLibrary(hDLL);
        system("pause");
        return 0;
}

回复

使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-11-30 09:34:22 | 显示全部楼层
    复制代码 null9.png null8.png

    null7.png null5.png

    null6.png null4.png

    null3.png null2.png

    null1.png null0.png


    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-16 16:26 , Processed in 0.122638 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.