15160|28

2639

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

分享LM3S8962开发板SPI读取铁电代码 [复制链接]

前面很多网友提问LM3S的SPI不好用或者用不了,通常用GPIO模拟,经过我2天的调试,SPI完全能用,效率还不错,下面提供主要函数和代码,调试时根据布板情况先从低波特率往上加,我是从9600开始调,最高1M没有问题,再高有点不稳定因为我电路板是飞线的线有点长,后面附逻辑分析仪截图,我写的铁电型号是FM25L256
//SSI初始化
void SSIInit(void)
{
  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//使能GPIOA      
  SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);//使能SSI
  SSIDisable(SSI0_BASE);
  GPIOPinTypeSSI(GPIO_PORTA_BASE, (GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5));  
  GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT);//配置片选管脚为输出
  GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);
  SSIConfig(SSI0_BASE,SSI_FRF_MOTO_MODE_3, SSI_MODE_MASTER, 9600, 8);//配置SSI
  SSIEnable(SSI0_BASE);//使能SSI                                                                   
}
//使能SPI
void SPIEnable()
{
    unsigned long ulTemp;
    SSIDisable(SSI0_BASE);
    SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_3, SSI_MODE_MASTER, 9600, 8);
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);
    GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, ~GPIO_PIN_3);
    SSIEnable(SSI0_BASE);
    while(SSIDataGetNonBlocking(SSI0_BASE, &ulTemp) != 0)//清除FIFO
    {
    }
}
//禁止SPI
void SPIDisable()
{
    unsigned long ulTemp;
    while(SSIDataGetNonBlocking(SSI0_BASE, &ulTemp) != 0)//清除FIFO
    {
    }
    SSIDisable(SSI0_BASE);
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,  GPIO_PIN_TYPE_STD_WPU);
    GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3);
}
//发送一个字节
void Send_Byte(unsigned char data)
{
   unsigned long NullData;
   SSIDataPut(SSI0_BASE, data);   
   SSIDataGet(SSI0_BASE, &NullData);                                              
}
//接收一个字节
unsigned char Get_Byte(void)
{
   unsigned long ReadData;
   SSIDataPut(SSI0_BASE, 0xff);//发送一个无效字节,以产生接收时钟
   SSIDataGet(SSI0_BASE, &ReadData);
   return (unsigned char)ReadData;
}
//----------main主函数------------------------------------
SSIInit();//初始化SPI
SPIEnable();//使能铁电
Send_Byte(0x3);//发送读命令
Send_Byte(0x0);//读取数据地址高字节
Send_Byte(0x0);//读取数据地址低字节
sfbuf[0]=Get_Byte();//读取数据
sfbuf[1]=Get_Byte();
sfbuf[2]=Get_Byte();
sfbuf[3]=Get_Byte();
SPIDisable();//禁止铁电
SysCtlDelay(100*(TheSysClock/3000));
SPIEnable();
Send_Byte(0x06);//发送写使能命令
SPIDisable();
SPIEnable();
Send_Byte(0x02);//发送字节数据烧写命令
Send_Byte(0x0);//发送2个字节的地址信息
Send_Byte(0x0);
Send_Byte(0x60);
Send_Byte(0x61);
Send_Byte(0x62);
Send_Byte(0x63);
SPIDisable();
SysCtlDelay(100*(TheSysClock/3000));
SPIEnable();//使能铁电
Send_Byte(0x3);//发送读命令
Send_Byte(0x0);//读取数据地址高字节
Send_Byte(0x0);//读取数据地址低字节
sfbuf[0]=Get_Byte();//读取数据
sfbuf[1]=Get_Byte();
sfbuf[2]=Get_Byte();
sfbuf[3]=Get_Byte();
SPIDisable();//禁止铁电
写铁电截图

读铁电截图

查看精华帖全部内容,请登录或者注册

最新回复

新手学习了  详情 回复 发表于 2013-8-13 09:15

点评

为什么每次DataPut之后,都要马上DataGet一下呢?这是TI的SSI模块的特殊规定么?原来我用SiLabs的单片机,就不需要这样的操作。不过既然DataGet没有进入死循环,那说明还真有数据接收了啊!  详情 回复 发表于 2012-9-28 15:58
 
点赞 关注

回复
举报

978

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
你的逻辑分析仪很漂亮,介绍下??
 
 

回复

640

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
专业水平
 
 
 

回复

2639

帖子

0

TA的资源

五彩晶圆(中级)

4
 
就是论坛上介绍的DIY逻辑分析仪,好像98一样,很实惠,调试一下串口、SPI、I2C足够了
 
 
 

回复

1412

帖子

15

TA的资源

版主

5
 
淘宝上有卖这个逻辑分析仪
 
个人签名https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
 
 

回复

2639

帖子

0

TA的资源

五彩晶圆(中级)

6
 
 很多啊
 
 
 

回复

202

帖子

0

TA的资源

一粒金砂(高级)

7
 

我确定LM3S的SPI跑铁电

能稳定跑到规格书的极限速度12.5M(50M/4)

[ 本帖最后由 mr.king 于 2010-8-30 20:55 编辑 ]
 
 
 

回复

2639

帖子

0

TA的资源

五彩晶圆(中级)

8
 
高手啊,我只能稳定跑8M,再高不知道是什么原因片选时序有点异常
 
 
 

回复

702

帖子

0

TA的资源

一粒金砂(高级)

9
 
 
个人签名你好呀
 
 

回复

2639

帖子

0

TA的资源

五彩晶圆(中级)

10
 
这么实用的源码没人敢兴趣吗?这可是我实际项目中的代码,下一步准备再分享一个I2C的代码:D
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

11
 
牛,顶!
 
 
 

回复

1012

帖子

0

TA的资源

五彩晶圆(初级)

12
 
好!
 
 
 

回复

1012

帖子

0

TA的资源

五彩晶圆(初级)

13
 
为什么我的只能单子节收发?不能连续?

enable信号都是发一个或收一个直接就升一次
 
 
 

回复

1万

帖子

16

TA的资源

版主

14
 

谢谢楼主

我发现坛里最大的地主,技术也挺牛地
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

15
 
LZ是相当NB的!~
 
 
 

回复

349

帖子

0

TA的资源

一粒金砂(中级)

16
 
学习了
 
 
 

回复

1万

帖子

16

TA的资源

版主

17
 

楼主啊,能否把全部文件发一下???

;P
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

18
 
不错,学习了。。。。。。
 
个人签名我的博客
 
 

回复

1万

帖子

16

TA的资源

版主

19
 

我用楼主的代码,怎么SCLK没有波

强烈要求上原码????;P
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

20
 
这么好的资料怎么没人顶
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 3

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表