OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 24019|回复: 5

问一个有关SPI1初始化的问题

[复制链接]

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2011-2-12
在线时间
36 小时
发表于 2011-2-18 21:55:50 | 显示全部楼层 |阅读模式

一直因为没有买原子的开发板而遗憾,因为已经买了白菜的板,不过一直在看着原子的教程用白菜的板学习,(呵呵,有点对不住!)听说原子在准备新的开发板,到时一定要入手一块。在调试TFT的字库的时候,老是显示不了字库SST25VF080B里面的汉字,怀疑是SPI1的初始化不对,但是不知错在哪里,麻烦板主指点一下

下面的我初始化代码:

void FLASH_SPI_Config(void)
{
  /* SCK, MISO and MOSI  A5=CLK,A6=MISO,A7=MOSI*/
//  RCC->APB2ENR|=1<<2;       // PORTA时钟
  RCC->APB2ENR|=1<<4;       // PORTC时钟
  RCC->APB2ENR|=1<<12;       //打开SPI1时钟
  RCC->APB2ENR|=1<<0;       //打开复用功能时钟
  GPIOA->CRL&=0X000FFFFF;
  GPIOA->CRL|=0XBBB00000;   //PA5,6,7复用推挽输出
//  GPIOA->ODR|=7<<5;         //PA5,6,7输出高电平

  GPIOC->CRH&=0XFF0FFFFF;
  GPIOC->CRH|=0X00300000;   //PORTC13推挽输出 ,做为片选使用
  GPIOC->ODR|=1<<13;        //PORTC13=1;

  /* SPI1 configuration  注意25系列的沿操作*/
  SPI1->CR1&=~(1<<6);     //关闭SPI1   看手册486页
  SPI1->CR1&=~(1<<3);
  SPI1->CR1&=~(1<<4);
  SPI1->CR1&=~(1<<5);  //3,4,5位置0;2分频
  SPI1->CR1&=~(1<<1);  //CPOL=0 时钟空闲时为低
  SPI1->CR1&=~(1<<0);  //CPHA=0 数据从第1个时钟边沿开始
  SPI1->CR1&=~(1<<11);  //8位数据格式
  SPI1->CR1&=~(1<<7);  //高位在前
  SPI1->CR1&=~(1<<10);
  SPI1->CR1&=~(1<<15); //两线全双工,
  SPI1->CR1|=1<<2;     //主模式
  SPI1->CR1|=1<<9;     //启用软件从设备管理
  SPI1->CRCPR=7;
  SPI1->CR1|=1<<6;  //打开SPI1

 
}

tft.rar

1.12 MB, 下载次数: 1492

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2011-2-12
在线时间
36 小时
 楼主| 发表于 2011-2-18 21:58:27 | 显示全部楼层
附件是我的工程文件,下面的是SST25VF080B的时序图


spi.gif
回复 支持 反对

使用道具 举报

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2011-2-12
在线时间
36 小时
 楼主| 发表于 2011-2-18 21:59:35 | 显示全部楼层
晕,图片怎么显示不出来,还没有学会用论坛
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-2-19 01:09:18 | 显示全部楼层
回复【楼主位】lf8013:
-------------------------------
这个知道问题在哪里就好说。白菜的教程,应该也有对SST25这个芯片的读写代码,你可以直接参考的。
一般这种flash芯片,都有个ID可读的,你通过读ID,就可以判断你的SPI设置是否正确了。如果不正确,注意相位和频率是否正确,从这几个方面入手,相信不难。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2011-2-12
在线时间
36 小时
 楼主| 发表于 2011-2-19 13:22:57 | 显示全部楼层
其实这个驱动函数还是白菜的,我一点也没有改过,就是改过端口的配置,然后就不正常了,白菜的端口配置使用库函数,我改为寄存器操作了,初学乍练,看版主原子的教程特别适合自己的思维习惯,所以就看着版主的教程,用白菜的板,来学习了
回复 支持 反对

使用道具 举报

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2011-2-12
在线时间
36 小时
 楼主| 发表于 2011-2-19 13:47:26 | 显示全部楼层

可以了,仔细对了数据手册,原来是少了一条指令

但是不明白的是

SPI1->CRCPR=7;

这个寄存器到底是怎么用的,起什么作用?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 16:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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