找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5879|回复: 11
收起左侧

HX8357的9BIT的SPI连接STM32F103的问题

[复制链接]
ID:98880 发表于 2018-7-15 08:55 | 显示全部楼层 |阅读模式
5黑币
几年前买了一块天马的屏,是HX8357的,最近有空拿出来用,发现原来给的DEMO为模拟9位SPI的,我试过很多种方法,还是没有办法用STM32F103的硬件SPI驱动起来,原因是屏需要9位的SPI,但F103的SPI只有8位和16位的模式,有没有办法可以改库函数让他支持9位的模式呢?


d0d80167098ac2535de8497a5d240662_889.png
HX8357_9BIT_SPI.png

最佳答案

查看完整内容

显示屏的8bit/9bit 可以通过跳线来选择的, 9bit软件不好写, 可以按hx8357的规格书来改成8bit spi. 最终的显示效果几乎没什么分别.
回复

使用道具 举报

ID:517951 发表于 2018-7-15 08:55 | 显示全部楼层
显示屏的8bit/9bit 可以通过跳线来选择的, 9bit软件不好写, 可以按hx8357的规格书来改成8bit spi. 最终的显示效果几乎没什么分别.
无标题.png
回复

使用道具 举报

ID:469589 发表于 2022-4-11 20:50 | 显示全部楼层
最后问题解决了吗?期待后续结果。
回复

使用道具 举报

ID:123289 发表于 2022-4-12 10:47 | 显示全部楼层
提示:库也是程序。
回复

使用道具 举报

ID:469589 发表于 2022-5-12 10:44 | 显示全部楼层
STM32F030有9位等多位数,但是我不会用!
并且由于容量小,做不了几个程序。
回复

使用道具 举报

ID:1026496 发表于 2022-5-14 22:18 | 显示全部楼层
可以设置 8 位还是9位
回复

使用道具 举报

ID:797821 发表于 2022-5-17 17:32 | 显示全部楼层
因为这9bit 的SPI 是因为没有RS 引脚,所以需要多一位来区分是送cmd 还是data .当第9位为0时,传送的是cmd . 为1时传送的是data (注:cmd 是指寄存器地址,data 是数据)。 好多年没有弄这个了,我手上还有之前的写的函数。你可以参考看看能不能用。

void SPI_WriteComm(unsigned int i)
{
    unsigned char n,m;
   
    SPI_CS = 0;   
    SPI_CLK = 0;
    SPI_DI = 0;
    SPI_CLK = 1;
     
    m=0x80;
    for(n=0; n<8; n++)
    {           
           if(i&m)

            {   
                SPI_CLK = 0;
                SPI_DI = 1;
                SPI_CLK = 1;
            }
            else
            {     
                SPI_CLK = 0;
                SPI_DI = 0;
                SPI_CLK = 1;
            }            
            m=m>>1;

           
     }  
     
     SPI_CS = 1;
}

void SPI_WriteData(unsigned int i)
{
    unsigned char n,m;
   
    SPI_CS = 0;   
    SPI_CLK = 0;
    SPI_DI = 1;
    SPI_CLK = 1;
     
    m=0x80;
    for(n=0; n<8; n++)
    {           
           if(i&m)

            {   
                SPI_CLK = 0;
                SPI_DI = 1;
                SPI_CLK = 1;
            }
            else
            {     
                SPI_CLK = 0;
                SPI_DI = 0;
                SPI_CLK = 1;
            }            
            m=m>>1;

           
     }  
     
     SPI_CS = 1;
}
回复

使用道具 举报

ID:624769 发表于 2022-5-17 17:50 | 显示全部楼层
用硬件是可以用的,但是不能用通用的"库", 要用你自己写的"库",当然,你也可以找找有没有通用的9位的"库", 反正, 我从来不用 "函数库", 搞明白底层原理, 自己写函数自由度和效率不是更高?
回复

使用道具 举报

ID:469589 发表于 2022-11-6 09:29 | 显示全部楼层
似乎很有道理。
回复

使用道具 举报

ID:469589 发表于 2023-3-8 13:27 | 显示全部楼层
yaoyao2022 发表于 2022-5-14 22:18
可以设置 8 位还是9位

设置没有问题,不知道怎么产生9位数据到寄存器?
那一位怎么操作后组装到发送“字”中,因为STM32只有8、16、32位操作,9位是怎么组装而成的?!
回复

使用道具 举报

ID:98880 发表于 2023-11-26 22:28 | 显示全部楼层
GlenXu 发表于 2023-3-8 13:27
设置没有问题,不知道怎么产生9位数据到寄存器?
那一位怎么操作后组装到发送“字”中,因为STM32只有8 ...

对了,我问这个问题的本意也是想知道如何用硬件的SPI输出9位,毕竟硬件的方式速度很快,而不是用IO模拟。
回复

使用道具 举报

ID:469589 发表于 2024-5-10 22:03 | 显示全部楼层
是的!
重点是如果中断多或者时间不好分配时,只能用硬件,便于调度,但就是不知道怎么用8位或16位发送9位的数据。即便时组装好了,也没法实现发送。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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