共2条 1/1
1
跳转至
页
SSP,LPC213x,SSP,SPI1 用过SSP的请进:LPC213x,使用SSP作SPI1的困惑。
![](http://m.amcfsurvey.com/uphotos/jackwang/thumb/avatar.jpg)
问 应用:我的应用是这样的:同过SPI总线连接一个Flash,型号AT45DB021。
在原先的设计下使用LPC2104的SPI0,一切正常。
困惑:使用LPC2132时,我将Flash挂在 SSP上就是SP1,而不是SP0。不知道如何设置。试过SPI的4种模式,都不工作。
请问:读 SSP模块的 SSPDR,可以使用C语言的 a = SSPDR;吗?为什么这句不能将 SSP的FIFO清除?有没有设置 SSP和作为SPI使用的例子代码,仍过来一个。最好是C的。 答 1: 等热心人。 答 2: re:1。要保证您的相关寄存器地址正确;
2。 SSP有2个控制寄存器,设置是不是完全正确?
3。AT45DB021时钟低有效还是高有效?必须和 SSP的极性一致。 答 3: 谢谢周工。但仍未解决。/****************************************************************************
* 名称: SSPIni()
* 功能:初始化 SSP接口,设置为SPI主机。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void SspIni(void)
{ SSPCPSR = 0x52; // 设置SPI时钟分频
SSPCR0 = 0x0007; // 设置 SSP接口模式,SCR=0 分频值为0+1,CPOL=0,
//CPHA=0,FRF=00 选SPI,DDS=0111 8bit数据格式
SSPIMSC = 0x00; // 取消所有中断使能。
SSPCR1 = 0x2; // MS=0 主机,SSE=1 使能 SSP。
SSPICR = 0x0;
}
/****************************************************************************
* 名称:MSendData()
* 功能:向SPI总线发送数据。
* 入口参数:data 待发送的数据
* 出口参数:返回值为读取的数据
****************************************************************************/
uint8 MSendData(uint8 data)
{
SSPDR = data; // 是不是这条错了, SSPDR是16bit,而data是8bit
IOSET1 = TORCH; // 测试指示灯
while( 0==( SSPSR&0x01) ); // 等待SPIF置位,即等待数据发送完毕
IOCLR1 = TORCH; // 测试指示灯关
return( SSPDR);
}
下面图为45DB021的时序,我使用LPC2132的SPI0端口模式0,正常工作。 答 4: SSP连接SPI SST25VF040我的情况好一点,仔细分析过,发现读的时会丢失刚开始的2个字节,晕死了,都不知道怎么搞的,高手请赐教!!!
在原先的设计下使用LPC2104的SPI0,一切正常。
困惑:使用LPC2132时,我将Flash挂在 SSP上就是SP1,而不是SP0。不知道如何设置。试过SPI的4种模式,都不工作。
请问:读 SSP模块的 SSPDR,可以使用C语言的 a = SSPDR;吗?为什么这句不能将 SSP的FIFO清除?有没有设置 SSP和作为SPI使用的例子代码,仍过来一个。最好是C的。 答 1: 等热心人。 答 2: re:1。要保证您的相关寄存器地址正确;
2。 SSP有2个控制寄存器,设置是不是完全正确?
3。AT45DB021时钟低有效还是高有效?必须和 SSP的极性一致。 答 3: 谢谢周工。但仍未解决。/****************************************************************************
* 名称: SSPIni()
* 功能:初始化 SSP接口,设置为SPI主机。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void SspIni(void)
{ SSPCPSR = 0x52; // 设置SPI时钟分频
SSPCR0 = 0x0007; // 设置 SSP接口模式,SCR=0 分频值为0+1,CPOL=0,
//CPHA=0,FRF=00 选SPI,DDS=0111 8bit数据格式
SSPIMSC = 0x00; // 取消所有中断使能。
SSPCR1 = 0x2; // MS=0 主机,SSE=1 使能 SSP。
SSPICR = 0x0;
}
/****************************************************************************
* 名称:MSendData()
* 功能:向SPI总线发送数据。
* 入口参数:data 待发送的数据
* 出口参数:返回值为读取的数据
****************************************************************************/
uint8 MSendData(uint8 data)
{
SSPDR = data; // 是不是这条错了, SSPDR是16bit,而data是8bit
IOSET1 = TORCH; // 测试指示灯
while( 0==( SSPSR&0x01) ); // 等待SPIF置位,即等待数据发送完毕
IOCLR1 = TORCH; // 测试指示灯关
return( SSPDR);
}
下面图为45DB021的时序,我使用LPC2132的SPI0端口模式0,正常工作。 答 4: SSP连接SPI SST25VF040我的情况好一点,仔细分析过,发现读的时会丢失刚开始的2个字节,晕死了,都不知道怎么搞的,高手请赐教!!!
共2条 1/1
1
跳转至
页
回复
有奖活动 | |
---|---|
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! |
打赏帖 | |
---|---|
【换取手持数字示波器】滞回比较电路分析被打赏30分 | |
【换取手持数字示波器】电流镜电路分析被打赏20分 | |
【换取手持数字示波器】基于状态变量推导实现有源滤波器被打赏20分 | |
玩转“DFRobot盖革计数器模块”准备工作认识模块知识分享被打赏30分 | |
【换取手持数字示波器】AHT10温度检测分享被打赏40分 | |
【换取手持数字示波器】ACM32F070开发板点亮LCD屏和触控按键,串口,ADC被打赏40分 | |
【换取手持数字示波器】ACM32F070LCD屏和触控按键功驱动蜂鸣器分享被打赏40分 | |
【换取手持数字示波器】国民技术PWM功能知识分享被打赏40分 | |
【换取手持数字示波器】放大器运放知识分享被打赏40分 | |
【分享评测,赢取加热台】+开关电源AC输入知识分享被打赏30分 |