|
1-C.TXT
(1 KB, 下载次数: 170)
未经验证,仅供参考。 如有客户移植到其他MCU并成功驱动,推荐分享下相关的底层代码。
/*
RA8875 模拟8080总线的示范代码,可以移植到任意单片机
针对不同的MCU,请大家自己完成GPIO的配置,和每个IO置0和置1的宏定义
*/
/* 片选 */
#define RA8875_CS_0()
#define RA8875_CS_1()
/* 寄存器选择,0表示REG, 1表示RAM */
#define RA8875_RS_0()
#define RA8875_RS_1()
/* 8080 总线读信号 */
#define RA8875_OE_0()
#define RA8875_OE_1()
/* 8080 总线写信号 */
#define RA8875_WE_0()
#define RA8875_WE_1()
/* 8080 16bit 数据读 */
#define RA8875_READ_D16() BUS16
/* 8080 16bit 数据写 */
#define RA8875_WRITE_D16(x) BUS16 = x
/* 初始化函数中调用RA8875_InitSoft8080函数 */
static void RA8875_InitSoft8080(void)
{
/* 此处添加配置CPU GPIO的代码 */
/* 总线初始状态全部为高 */
RA8875_CS_1();
RA8875_RS_1();
RA8875_OE_1();
RA8875_WE_1();
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_WriteCmd
* 功能说明: 写RA8875指令寄存器
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteCmd(uint8_t _ucRegAddr)
{
RA8875_CS_0();
RA8875_RS_1();
RA8875_WRITE_D16(_ucRegAddr);
RA8875_WE_0();
RA8875_WE_1();
RA8875_CS_1();
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_WriteData
* 功能说明: 写RA8875指令寄存器
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteData(uint8_t _ucRegValue)
{
RA8875_CS_0();
RA8875_RS_0();
RA8875_WRITE_D16(_ucRegValue);
RA8875_WE_0();
RA8875_WE_1();
RA8875_CS_1();
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_ReadData
* 功能说明: 读RA8875寄存器值
* 形 参: 无
* 返 回 值: 寄存器值
*********************************************************************************************************
*/
uint8_t RA8875_ReadData(uint8_t _ucRegAddr)
{
uint8_t value;
RA8875_CS_0();
RA8875_RS_0();
RA8875_OE_0();
RA8875_OE_1();
value = RA8875_READ_D16();
RA8875_CS_1();
return value;
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_ReadStatus
* 功能说明: 读RA8875状态寄存器
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static uint8_t RA8875_ReadStatus(void)
{
uint8_t value;
RA8875_CS_0();
RA8875_RS_1();
RA8875_OE_0();
RA8875_OE_1();
value = RA8875_READ_D16();
RA8875_CS_1();
return value;
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_WriteData16
* 功能说明: 写RA8875数据总线,16bit,用于RGB显存写入
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteData16(uint16_t _usRGB)
{
RA8875_CS_0();
RA8875_RS_0();
RA8875_WRITE_D16(_usRGB);
RA8875_WE_0();
RA8875_WE_1();
RA8875_CS_1();
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_ReadData16
* 功能说明: 读RA8875显存,16bit RGB
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static uint16_t RA8875_ReadData16(void)
{
uint16_t value;
RA8875_CS_0();
RA8875_RS_0();
RA8875_OE_0();
RA8875_OE_1();
RA8875_READ_D16(_usRGB);
RA8875_CS_1();
return value;
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_WriteReg
* 功能说明: 写RA8875寄存器. RA8875的寄存器地址和数据都是8bit的
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteReg(uint8_t _ucRegAddr, uint8_t _ucRegValue)
{
s_ucRA8875Busy = 1;
RA8875_WriteCmd(_ucRegAddr);
RA8875_WriteData(_ucRegValue);
s_ucRA8875Busy = 0;
}
/*
*********************************************************************************************************
* 函 数 名: RA8875_ReadReg
* 功能说明: 写RA8875寄存器. RA8875的寄存器地址和数据都是8bit的
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static uint8_t RA8875_ReadReg(uint8_t _ucRegAddr)
{
uint8_t value;
RA8875_WriteCmd(_ucRegAddr);
value = RA8875_ReadData();
return value;
}
|
|