完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
自己画了个板子。自己以为明白了。于是把触摸屏,Flash的SPI接口共用了SPI1。Flash是高速的可以直接36M不分频。触摸控制芯片是AD7843SPI速度快了会出错,于是我想在用触摸的时候把SPI速度换为64分频。用Flash时候换为不分频。而且之前也查过,只要在设置SPI之前关闭了SPI就可以再次设置。于是就这么做了......但是板子做回来才知道不行,我每次如果只改SPI中的分频,再使能SPI并不能达到效果。一定要再重新完全初始化一次。这样太费时间了,有哪位大神遇到过了。(直接操作寄存器,或者用库函数都不行)
单独使用其中一个都是可以的。就是不能这样更改速度。求教了 下面贴下问题代码。 u8 SPI1_Mode = 0; 不分频 void SPI1_TurnToFlash(void){if(SPI1_Mode != SPI1_Flash){//SPI_Cmd(SPI1, DISABLE);//关闭//RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, DISABLE);//SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;//SPI_Init(SPI1, &SPI_InitStructure);//RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);//SPI_Cmd(SPI1, ENABLE);//启动SPI1 SPI1->CR1 &= ~(1<<6);//关闭SPISPI1->CR1 &= ~(1<<3);SPI1->CR1 &= ~(1<<5);//分频改变SPI1->CR1 |= (1<<6);//启动SPISPI1_Mode = SPI1_Flash;}} 64分频 void SPI1_TurnToTouch(void){if(SPI1_Mode != SPI1_Touch){//SPI_Cmd(SPI1, DISABLE);//关闭//RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, DISABLE);//SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;//SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;//SPI_Init(SPI1, &SPI_InitStructure);//RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);//SPI_Cmd(SPI1, ENABLE);//启动SPI1 SPI1->CR1 &= ~(1<<6);SPI1->CR1 |= (1<<3);SPI1->CR1 |= (1<<5);SPI1->CR1 |= (1<<6);SPI1_Mode = SPI1_Touch;}} |
|
相关推荐
2个回答
|
|
|
|
|
|
我在网上看到的都是说要先关了SPI再设置。于是我就那么傻里吧唧的弄了。
试试原子大大的可以不,我那个就是不行 void SPIx_SetSpeed(u8 SpeedSet) { SPI1->CR1&=0XFFC7;//Fsck=Fcpu/256 if(SpeedSet==SPI_SPEED_2)//二分频 { SPI1->CR1|=0<<3;//Fsck=Fpclk/2=36Mhz }else if(SpeedSet==SPI_SPEED_8)//八分频 { SPI1->CR1|=2<<3;//Fsck=Fpclk/8=9Mhz }else if(SpeedSet==SPI_SPEED_16)//十六分频 { SPI1->CR1|=3<<3;//Fsck=Fpclk/16=4.5Mhz }else //256分频 { SPI1->CR1|=7<<3; //Fsck=Fpclk/256=281.25Khz 低速模式 } //SPI1->CR1|=1<<6; //SPI设备使能 /* Enable SPI1 */ SPI_Cmd(SPI1, ENABLE); //使能SPI外设 } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1649 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
994 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
694 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1613 浏览 2 评论
1872浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
544浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 22:37 , Processed in 0.684690 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号