8356|9

14

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

lpc1343 spi 读写rc531时序问题 [复制链接]

我按照手册的时序来写了2个读写函数。但是读写的数据总是不对。

我网上找了很多相关资料,感觉他们的操作时序跟我一样的呀。

我设置的是8位,CPOL=0,CPHA=0。

下面是操作的函数,望有人帮忙分析下。

 

/****************************************************************************
* 名    称:WriteIO()
* 功    能:往一个地址写一个数据(EEPROM)。
* 入口参数:Address  地址
   value    数据
* 出口参数:无
****************************************************************************/
void WriteIO(unsigned char Address, unsigned char value)
{
 //选择寄存器页
 RC531NSS_CLR();
 SPI_SendByte(0x00);
 RC531NSS_SET();
 RC531NSS_CLR();
 SPI_SendByte(GetRegPage(Address));
 RC531NSS_SET();

 //写入一个字节
 RC531NSS_CLR();
 SPI_SendByte((Address<<1)&0x7f);
 RC531NSS_SET();
 RC531NSS_CLR();
 SPI_SendByte(value);
 RC531NSS_SET();           
}


/****************************************************************************
* 名    称:ReadIO()
* 功    能:从一个地址读出一个数据(EEPROM)。
* 入口参数:Address  地址
* 出口参数:数据
****************************************************************************/
unsigned char ReadIO(unsigned char Address)
{
 unsigned char a;
 RC531NSS_CLR();
 SPI_SendByte(0x00);
 RC531NSS_SET();
 RC531NSS_CLR();
 SPI_SendByte(GetRegPage(Address));
 RC531NSS_SET();

 RC531NSS_CLR();
 SPI_SendByte((Address<<1)|0x80);
 RC531NSS_SET();
 RC531NSS_CLR();
 a = SPI_RecByte();
 SPI_SendByte(0x00);  
 RC531NSS_SET();
 return a;            
}

 

/*******************************************************************
** 函数名称: void SPI_SendByte()    
** 功能描述: 通过SPI接口发送一个字节   
** 输   入: INT8U byte: 发送的字节    
** 输   出: 无         
**********************************************************************/
void SPI_SendByte(unsigned char byte)
{
 LPC_SSP->DR=byte;
 while(LPC_SSP->SR & SSPSR_TFE ==0);  //为0 表示发送fifo 不为空
}

/**********************************************************************
** 函数名称: INT8U SPI_RecByte()    
** 功能描述: 从SPI接口接收一个字节    
** 输   入: 无         
** 输   出: 收到的字节       
*************************************************************************/
unsigned char SPI_RecByte(void)
{
 uint8_t temp;
 while(LPC_SSP->SR & SSPSR_RNE==0);  //为0表示接受fifo为空
 temp=LPC_SSP->DR;
 return temp;
}

 

 

此帖出自NXP MCU论坛

最新回复

SPI,用不着这么复杂,我同事已经调试通过了。  详情 回复 发表于 2010-6-11 13:22
点赞 关注
 

回复
举报

2131

帖子

0

TA的资源

至上芯片

沙发
 

回复 楼主 443799600 的帖子

接收时序有问题,你可以用示波器看一下!
最好看一下原例程!
此帖出自NXP MCU论坛
 
个人签名处处留心皆学问!
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

回复 沙发 daicheng 的帖子

能 说明下哪个地方出问题吗。谢谢
此帖出自NXP MCU论坛
 
 
 

回复

2131

帖子

0

TA的资源

至上芯片

4
 

回复 板凳 443799600 的帖子

在接收从机的数据时,主机也需要发送空闲字节来产生时钟
你试试这样
unsigned char SPI_RecByte(void)
{
   uint8_t temp;
  判断是否可以发送数据
  SPI_SendByte(0xFF);
   如果接收到数据
   temp=LPC_SSP->DR;
   return temp;
}
我没有板子,没有试过!你试试有问题在讨论一下

[ 本帖最后由 daicheng 于 2010-6-10 15:08 编辑 ]
此帖出自NXP MCU论坛
 
个人签名处处留心皆学问!
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复 4楼 daicheng 的帖子

在接收从机的数据时,主机也需要发送空闲字节来产生时钟
--------------
我把ssel    由高拉低,不能触发 sck的时钟产生吗?

我用了你的这种方法,每次返回的数据都是0xff了。
此帖出自NXP MCU论坛
 
 
 

回复

2131

帖子

0

TA的资源

至上芯片

6
 

回复 5楼 443799600 的帖子

我没用过这个片子,所以对寄存器不太熟悉
说过程吧
  判断是否可以发送数据
  发送一个0XFF
  是否有数据接收
  接收数据
此帖出自NXP MCU论坛
 
个人签名处处留心皆学问!
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

7
 
悲剧,我整来整去,读写都不正确。这里又没有示波器。根本没法测试。我囧啊
此帖出自NXP MCU论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(中级)

8
 

调试通讯是个很麻烦的事情,看不见摸不着,推荐你试试我做的逻辑分析仪,可以直接看到通讯的字节内容,这样就方便多了。下面是spi,iic的截图。

 

http://item.taobao.com/item.htm?id=4793452890

 

此帖出自NXP MCU论坛
 
个人签名逻辑分析仪 总线直通车
http://shop59978877.taobao.com/
 
 

回复

92

帖子

0

TA的资源

一粒金砂(中级)

9
 
SPI,用不着这么复杂,我同事已经调试通过了。
此帖出自NXP MCU论坛
 
个人签名www.weboch.com.cn
NXP MCU RFID Logic automotive  IC & solution
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

10
 
问题我已经找到,用spi的时候必须统一方式,如果用硬件spi,那么接口设置就要全部设置成硬件的。用io模拟spi就要把io都设置成io去模拟,不然ssel使能的电平会发生不确定的翻转。
此帖出自NXP MCU论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表