AI8051U驱动ST7796时遇到问题
2024-11-27 21:57 来自 272761180 发布 @ 综合讨论
- void SPI_Init(void)
- {
- /**** 配置SPI的IO引脚模式 ****/
- P1M0 |= 0xe0; //配置MOSI/MISO/SCLK引脚为推挽输出
- P1M1 &= ~0xe0;
- P1PU |= 0xe0; //允许准双向口内部上拉电阻
- TFT_MOSI = 1; //引脚上拉
- TFT_MISO = 1;
- TFT_SCLK = 1;
-
- /**** 配置SPI模式 ****/
-
- SPI_S1 = 0x00; // 选择SPI1的引脚 00:P1+ 01:P2+ 10:P4+ 11:P3+
- SPI_S0 = 0x00;
- //控制寄存器
- SSIG = 0X01; //控制寄存器 忽略SS引脚功能
- SPEN = 0x01; //使能SPI
- DORD = 0x00; //先发送高位MSB,若为1则先发送低位LSB
- MSTR = 0x01; //设置为主机模式,单主单从模式。须根据SSIG进行不同设置
- CPOL = 0x01; //时钟极性为高,即空闲时是高电平。极性相反时传输数据
- CPHA = 0x01; //前沿驱动,后沿采样
-
- //时钟配置
- //系统默认启动内部高速HRC,CLKSEL = 0x00:配置为内部高速HRC -00-00-> MCLK -> HSIOCK -HSCLKDIV-> HSCLK -SPI_CLKDIV-> SPI
- //同时,HSCLK是高速外设时钟源。当使用HSPI时在3V下最高频率为20MHz(同时调整PxSR寄存器为高速输出模式)
- CLKSEL &= ~0x40; //选择MCLK为高速IO时钟源
- HSCLKDIV = 0x01; //高速时钟1分频 -> 24M
- SPI_CLKDIV = 0x01; //SPI输入时钟1分频,0-255 -> 24M
- SPR1 = 0x01; //SCLK频率 = 24MHz/2 = 12MHz
- SPR0 = 0x01;
-
- //中断配置
- ESPI = 0x00; //禁止SPI中断
- SPSTAT = 0xc0; //清除中断标志位SPIF和写冲突标志位WCOL
- UART1_printf("开启LCD的SPI\n");
- }
- u8 SPI_WriteByte(u8 Byte)
- {
- SPDAT = Byte;
- while(!SPIF); //等待接收完一个byte
- SPSTAT = 0xc0; //清SPIF/WCOL标志
- return (SPDAT);
- } SPI的配置有问题吗?
- [code]void LCD_WR_REG(u8 dat)
- {
免责声明:
本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;
下一篇: Ai8H4K32TL触摸按键无法唤醒