你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【屋脊雀F407开发板】CMSISDAP驱动安装&驱动SPI彩屏&SYSTICK

[复制链接]
donatello1996 发布时间:2019-1-4 09:41
    在上一帖中我忘记提及如何使用屋脊雀CMSISDAP下载器进行程序下载和TTL串口调试,本帖补上CMSISDAP串口驱动安装教程。
    首先如果安装了MDK5系列的话,DAP下载器的驱动是肯定会顺便安装上的,在工程的Debug界面下可以看到DAP下载器的配置:
7.jpg
这个非常简单,就不详细讲,先讲串口驱动安装,Windows系统默认是没有CMSISDAP驱动的,需要手动安装,屋脊雀提供的资料中带了CMSISDAP驱动,直接安装即可,首先要将usbser.sys文件放到C:\Windows\INF目录下覆盖:
8.jpg
然后将剩下的mdmcpq.inf和stmcdc.inf放到一个文件夹下,在设备管理器中安装,安装完毕之后即可识别:
9.jpg
为了方便大家,我将这三个文件打包发到论坛上:


然后是SPI彩屏驱动,彩屏需要三根引脚,CLK MOSI CS,时钟,数据,片选,我一开始打算使用核心板上引出的SPI FLASH引脚(PB2 PB3 PB4)作为复用来驱动彩屏的,谁知道怎么都点不亮: 10.jpg


我又用了别的F407开发板(没有SPI器件引脚复用)作为对照,是可以点亮的,后面我就干脆不折腾了,直接用三根GPIO(PF9 PF11 PF13)模拟SPI时序来点亮液晶彩屏:
11.jpg
成功点亮了:
IMG_20190104_094027.jpg
附上驱动代码:
unsigned char SPI1_ReadWriteByte(unsigned char txdata)
{
        int  i;
        for(i=0;i<8;i++)
        {
                SPILCD_CLK_CLR;
                if(txdata&0x80)
                        SPILCD_DI_SET;
                else SPILCD_DI_CLR;
                SPILCD_CLK_SET;
                txdata<<=1;
        }
}       


void SPILCD_Send_Command(unsigned char out_cmd)              
{
        SPILCD_CS_CLR;
        SPI1_ReadWriteByte(out_cmd);
        SPILCD_CS_SET;
}


void SPILCD_Send_Data(unsigned int out_data)           
{
        SPILCD_CS_CLR;
        SPI1_ReadWriteByte(out_data>>8);
        SPI1_ReadWriteByte(out_data);
        SPILCD_CS_SET;
}




然后是SYSTICK延时,非常简单,参考原子的代码即可:


void Delay_us(int nus)
{               
        int temp;                     
        SysTick->LOAD=nus*fac_us;
        //时间加载                           
        SysTick->VAL=0x00;
        //清空计数器
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
        //开始倒数          
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));
        //等待时间到达   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
        //关闭计数器
        SysTick->VAL =0X00;
        //清空计数器
}


void Delay_ms(short nms)
{                  
        unsigned char repeat=nms/540;
        int temp;               
        //这里用540,是考虑到某些客户可能超频使用,
        //比如超频到248M的时候,delay_xms最大只能延时541ms左右了
        short remain=nms%540;
        while(repeat)
        {
                        SysTick->LOAD=(int)540*fac_ms;
        //时间加载(SysTick->LOAD为24bit)
        SysTick->VAL =0x00;
        //清空计数器
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
        //开始倒数
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));
        //等待时间到达   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
        //关闭计数器
        SysTick->VAL =0X00;
        //清空计数器       
                repeat--;
        }
        if(remain)
        {
                SysTick->LOAD=(int)remain*fac_ms;
                //时间加载(SysTick->LOAD为24bit)
                SysTick->VAL =0x00;
                //清空计数器
                SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
                //开始倒数
                do
                {
                        temp=SysTick->CTRL;
                }while((temp&0x01)&&!(temp&(1<<16)));
                //等待时间到达   
                SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
                //关闭计数器
                SysTick->VAL =0X00;
                //清空计数器       
        }
}


上传工程文件:
STM32F407ZGT6.zip (551.13 KB, 下载次数: 250)
收藏 评论8 发布时间:2019-1-4 09:41

举报

8个回答
donatello1996 回答时间:2019-1-4 10:15:19
这里想给屋脊雀工作室的设计者提个醒,最好能预留一组空的SPI引脚给用户用,尽量不要与已有的SPI器件复用。
zhdzhd 回答时间:2019-1-4 10:44:44
可能空间有限或节约成本吧
wujique 回答时间:2019-1-4 21:37:36
donatello1996 发表于 2019-1-4 10:15
这里想给屋脊雀工作室的设计者提个醒,最好能预留一组空的SPI引脚给用户用,尽量不要与已有的SPI器件复用。 ...

只要把两片FLASH的CS拉高,应该就可以用了。
wujique 回答时间:2019-1-4 21:39:54
zhdzhd-174422 发表于 2019-1-4 10:44
可能空间有限或节约成本吧

不是节约成本,节约成本的话,就不会有两片FLASH了。
1 首先是IO口没有那么多。
2 多个设备共用SPI控制器本来就是我要模拟的情景。

根本上就是,这套板子,是为了我做软件开发教程而做的。
donatello1996 回答时间:2019-1-5 11:10:08
huangxuejia-292 发表于 2019-1-4 21:37
只要把两片FLASH的CS拉高,应该就可以用了。

这点我也想到了,也拉高了,就是不行,我还用一个别的407板子来做空白对照,接在相同的PB2~PB4引脚上,是可以驱动的。
mmuuss586 回答时间:2019-1-5 13:08:00

不错,感谢分享
berber 回答时间:2021-5-31 19:28:31
说了半天我是来找驱动的你打包的驱动呢

龙泉火箭客 回答时间:2022-9-4 20:55:30
谢楼主分享资料谢楼主分享资料

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版