找回密码
 立即注册
查看: 99|回复: 1

AI8051U如何配置SPI通讯

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-02-07 17:41:54
已绑定手机

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2026-2-7 17:51:32 | 显示全部楼层 |阅读模式
诚心请教:
我现在想用AI8051U配置双向SPI通讯,驱动LCD显示
SPI通讯分为8Bite,和9Bite
现在需要实现:
1、如果多字节传输,第一字节为9bit,后面都是8Bite
2、如果单字节传输为9bit
如51板代码:
void write_comm(uint command)
{

        serial1=command;
        serial1=serial1<<8;//这是寄存数据位移,可以不能考虑此行
        CS1=0;
        SDA=0;SCL=0;SCL=1;//发送状态位SDA=0为command   SDA=1为DATA
        //开始发送8Bite
        SDA=db7;SCL=0;SCL=1;
        SDA=db6;SCL=0;SCL=1;
        SDA=db5;SCL=0;SCL=1;
        SDA=db4;SCL=0;SCL=1;
        SDA=db3;SCL=0;SCL=1;
        SDA=db2;SCL=0;SCL=1;
        SDA=db1;SCL=0;SCL=1;
        SDA=db0;SCL=0;SCL=1;
        SCL=0;
        CS1=1;

}
void write_data(uint data)
{
        serial1=data;
        serial1=serial1<<8;//这是寄存数据位移,可以不能考虑此行
        CS1=0;
        SDA=1;SCL=0;SCL=1;////发送状态位SDA=0为command   SDA=1为DATA
        //开始发送8位数据         
        SDA=db7;SCL=0;SCL=1;//开始发送8Bite
        SDA=db6;SCL=0;SCL=1;
        SDA=db5;SCL=0;SCL=1;
        SDA=db4;SCL=0;SCL=1;
        SDA=db3;SCL=0;SCL=1;
        SDA=db2;SCL=0;SCL=1;
        SDA=db1;SCL=0;SCL=1;
        SDA=db0;SCL=0;SCL=1;
        SCL=0;
        CS1=1;

}

void Dual_channel(uchar H_data,uchar L_data)
{      
        //        数据赋值
        serial2=H_data;
        serial1=L_data;
        serial2=serial2<<8;
        serial1=serial1<<8;
        //开始发送传输数据
        CS1=0;//
        SDA=1;SCL=0;SCL=1;        SCL=0;//发送状态位SDA=0为command   SDA=1为DATA
      
        //开始发送16位数据,SDA发送高8位,RS发送低8位         
        SDA=db15;RS=db7;SCL=0;SCL=1;
        SDA=db14;RS=db6;SCL=0;SCL=1;
        SDA=db13;RS=db5;SCL=0;SCL=1;
        SDA=db12;RS=db4;SCL=0;SCL=1;
        SDA=db11;RS=db3;SCL=0;SCL=1;
        SDA=db10;RS=db2;SCL=0;SCL=1;
        SDA=db9;RS=db1;SCL=0;SCL=1;
        SDA=db8;RS=db0;SCL=0;SCL=1;
        SCL=0;
        CS1=1;
}

哪位大神帮忙指导一下,谢谢!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:634
  • 最近打卡:2026-03-06 13:57:21
已绑定手机

52

主题

2464

回帖

8728

积分

论坛元老

积分
8728
发表于 2026-2-10 14:19:19 | 显示全部楼层
你是通过IO口模拟,纯软件实现SPI通讯。
那可以写一个传输9bit数据的函数,例如:void write_9bit(uint data)
其中data是16位数据,传输其中需要的9bit内容即可。
需要传输9bit数据时调用write_9bit函数,需要传输8bit数据时调用write_data函数。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-7 15:31 , Processed in 0.100540 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表