一、最小系统

RA6E2地奇星开发板采用经典的最小系统布局,其引脚特别是电源分布方式与当前众多开发板设计一致。无论是手头的自制模块还是成品开发板,都遵循了这一通用标准。这种设计最大的优势在于,确保了扩展板可以在不同平台间兼容使用。

二、扩展板

我们可以利用手头的扩展板进行实验。虽然像UART、SPI、I2C这类具体功能引脚无法直接对应,但只要理清物理引脚的关系,还是可以灵活使用,这总比完全依靠杜邦线连接要方便和可靠得多。
三、点灯应用

while(1)
{
R_IOPORT_PinRead(&g_ioport_ctrl,BSP_IO_PORT_01_PIN_10,&io_level);
if(io_level==BSP_IO_LEVEL_LOW){
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_HIGH);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
}else{
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_HIGH);
R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
}
}
四、LCD应用
硬件SPI驱动ST7735


1、SPI写数据函数
void LCD_Writ_Bus(u8 dat)
{
fsp_err_t err = FSP_SUCCESS;
volatile uint32_t wTimeout = 10000;
LCD_CS_Clr();
err = R_SPI_WriteRead(&g_spi0_ctrl,
&dat,
NULL,
1,
SPI_BIT_WIDTH_8_BITS);
if (err != FSP_SUCCESS)
{
printf("\r\nSPI发送错误\r\n");
return;
}
while (false == g_transfer_complete);
g_transfer_complete = false;
LCD_CS_Set();
}
2、LCD写入数据、命令函数
/******************************************************************************
函数说明:LCD写入数据
入口数据:dat 写入的数据
返回值: 无
******************************************************************************/
void LCD_WR_DATA(u16 dat)
{
LCD_DC_Set();//写数据
LCD_Writ_Bus(dat>>8);
LCD_Writ_Bus(dat);
LCD_DC_Set();//写数据
}
/******************************************************************************
函数说明:LCD写入命令
入口数据:dat 写入的命令
返回值: 无
******************************************************************************/
void LCD_WR_REG(u8 dat)
{
LCD_DC_Clr();//写命令
LCD_Writ_Bus(dat);
LCD_DC_Set();//写数据
}
3、ST7735初始化
void LCD_Init(void)
{
fsp_err_t err = R_SPI_Open(&g_spi0_ctrl, g_spi0.p_cfg);
if (err != FSP_SUCCESS)
{
printf("\r\nSPI启动错误\r\n");
}
LCD_RES_Set();
LCD_DC_Set();
LCD_CS_Set();
delay_ms(100);
LCD_RES_Clr();
delay_ms(100);
LCD_RES_Set();
delay_ms(100);
delay_ms(100);
LCD_WR_REG(0x11);
delay_ms(120);
LCD_WR_REG(0x36);
if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00);
else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0);
else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70);
else LCD_WR_DATA8(0xA0);
LCD_WR_REG(0xB1);
LCD_WR_DATA8(0x01);
LCD_WR_DATA8(0x2C);
LCD_WR_DATA8(0x2D);
LCD_WR_REG(0xB2);
LCD_WR_DATA8(0x01);
LCD_WR_DATA8(0x2C);
LCD_WR_DATA8(0x2D);
LCD_WR_REG(0xB3);
LCD_WR_DATA8(0x01);
LCD_WR_DATA8(0x2C);
LCD_WR_DATA8(0x2D);
LCD_WR_DATA8(0x01);
LCD_WR_DATA8(0x2C);
LCD_WR_DATA8(0x2D);
LCD_WR_REG(0xB4);
LCD_WR_DATA8(0x07);
LCD_WR_REG(0xC0);
LCD_WR_DATA8(0xA2);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x84);
LCD_WR_REG(0xC1);
LCD_WR_DATA8(0xC5);
LCD_WR_REG(0xC2);
LCD_WR_DATA8(0x0A);
LCD_WR_DATA8(0x00);
LCD_WR_REG(0xC3);
LCD_WR_DATA8(0x8A);
LCD_WR_DATA8(0x2A);
LCD_WR_REG(0xC4);
LCD_WR_DATA8(0x8A);
LCD_WR_DATA8(0xEE);
LCD_WR_REG(0xC5);
LCD_WR_DATA8(0x0E);
LCD_WR_REG(0xFC);
LCD_WR_DATA8(0x02);
LCD_WR_REG(0x3A);
LCD_WR_DATA8(0x05);
LCD_WR_REG(0xE0);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x1C);
LCD_WR_DATA8(0x07);
LCD_WR_DATA8(0x12);
LCD_WR_DATA8(0x37);
LCD_WR_DATA8(0x32);
LCD_WR_DATA8(0x29);
LCD_WR_DATA8(0x2D);
LCD_WR_DATA8(0x29);
LCD_WR_DATA8(0x25);
LCD_WR_DATA8(0x2B);
LCD_WR_DATA8(0x39);
LCD_WR_DATA8(0x00);
LCD_WR_DATA8(0x01);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x10);
LCD_WR_REG(0xE1);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x1D);
LCD_WR_DATA8(0x07);
LCD_WR_DATA8(0x06);
LCD_WR_DATA8(0x2E);
LCD_WR_DATA8(0x2C);
LCD_WR_DATA8(0x29);
LCD_WR_DATA8(0x2D);
LCD_WR_DATA8(0x2E);
LCD_WR_DATA8(0x2E);
LCD_WR_DATA8(0x37);
LCD_WR_DATA8(0x3F);
LCD_WR_DATA8(0x00);
LCD_WR_DATA8(0x00);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x10);
LCD_WR_REG(0x29);
}