📄 main.c
字号:
/*** (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology ************
* 文件名: main.c
* 作者 : UP Team, Wuhan University of Technology
* 日期 : 01/18/2010
* 描述 : 主程序源文件.
*******************************************************************************
*******************************************************************************
* 历史:
* 01/18/2010 : V1.0 初始版本
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include <stdio.h>
#include "LPC11xx.h"
#include "gpio.h"
#include "ssp.h"
#if SSP_DEBUG
#include "uart.h"
#endif
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define SSP_NUM 0
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
uint8_t src_addr[SSP_BUFSIZE];
uint8_t dest_addr[SSP_BUFSIZE];
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/**
* @函数名:SSP_LoopbackTest
* @描述:SSP Loopback 模式测试
* @参数: port #
* @返回值:无
*/
void SSP_LoopbackTest( uint8_t portNum )
{
uint32_t i;
if ( portNum == 0 )
{
#if !USE_CS
/* 设置SSEL引脚输出低电平. */
GPIOSetValue( PORT0, 2, 0 );
#endif
i = 0;
while ( i <= SSP_BUFSIZE )
{
/* 检测RXIM、TXIM中断,基于FIFOSIZE(8)的大小一次发送一块数据 */
SSP_Send( portNum, (uint8_t *)&src_addr[i], FIFOSIZE );
/* SSP接收数据 */
SSP_Receive( portNum, (uint8_t *)&dest_addr[i], FIFOSIZE );
i += FIFOSIZE;
}
#if !USE_CS
/* 设置SSEL引脚输出高电平. */
GPIOSetValue( PORT0, 2, 1 );
#endif
}
else
{
#if !USE_CS
/* 设置SSEL引脚输出低电平. */
GPIOSetValue( PORT2, 0, 0 );
#endif
i = 0;
while ( i <= SSP_BUFSIZE )
{
/* 检测RXIM、TXIM中断,基于FIFOSIZE(8)的大小一次发送一块数据 */
SSP_Send( portNum, (uint8_t *)&src_addr[i], FIFOSIZE );
/* SSP接收数据 */
SSP_Receive( portNum, (uint8_t *)&dest_addr[i], FIFOSIZE );
i += FIFOSIZE;
}
#if !USE_CS
/* 设置SSEL引脚输出高电平. */
GPIOSetValue( PORT2, 0, 1 );
#endif
}
return;
}
/**
* @函数名:main
* @描述:主函数
* @参数: 无
* @返回值:无
*/
int main (void)
{
uint32_t i;
#if SSP_DEBUG
int8_t temp[2];
#endif
SystemInit();
#if SSP_DEBUG
UARTInit(115200);
#endif
printf("\n\r-- Basic SSP Project V1.0 --\n\r");
printf("\n\r-- EM-LPC1100 --\n\r");
printf("\n\r-- Synchronous Serial Communication test --\n\r");
/* 初始化SSP I/O 引脚(p2.0-3) */
SSP_IOConfig( SSP_NUM );
SSP_Init( SSP_NUM );
for ( i = 0; i < SSP_BUFSIZE; i++ )
{
src_addr[i] = (uint8_t)i;
dest_addr[i] = 0;
}
#if TX_RX_ONLY
/* 板间通信测试,一块板充当主发送,另一块充当从接收 */
#if SSP_SLAVE
/* 从接收 */
SSP_Receive( SSP_NUM, (uint8_t *)dest_addr, SSP_BUFSIZE );
for ( i = 0; i < SSP_BUFSIZE; i++ )
{
if ( src_addr[i] != dest_addr[i] )
{
printf("\n\r SSP Receive failed!\n\r");
/* 验证失败 */
while ( 1 );
}
}
printf("\n\r SSP Receive success!\n\r");
#else
/* 主发送 */
SSP_Send( SSP_NUM, (uint8_t *)src_addr, SSP_BUFSIZE);
#endif
#else
/* TX_RX_ONLY=0,SSP内部回环测试 */
#if LOOPBACK_MODE
SSP_LoopbackTest( SSP_NUM );
for ( i = 0; i < SSP_BUFSIZE; i++ )
{
if ( src_addr[i] != dest_addr[i] )
{
#if SSP_DEBUG
temp[0] = (dest_addr[i] & 0xF0) >> 4;
if ( (temp[0] >= 0) && (temp[0] <= 9) )
{
temp[0] += 0x30;
}
else
{
temp[0] -= 0x0A;
temp[0] += 0x41;
}
temp[1] = dest_addr[i] & 0x0F;
if ( (temp[1] >= 0) && (temp[1] <= 9) )
{
temp[1] += 0x30;
}
else
{
temp[1] -= 0x0A;
temp[1] += 0x41;
}
UARTSend((uint8_t *)&temp[0], 2);
UARTSend("\n\r", 2);
#endif
/* 验证失败 */
printf("\n\r SSP Loopback Test failed!\n\r");
while( 1 );
}
}
#endif
#if SSP_DEBUG
/* 测试成功 */
printf("\n\r SSP Loopback Test success!\n\r");
#endif
#endif
while (1);
}
/**
* @}
*/
/**
* @}
*/
/** (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology *****文件结束*******/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -