找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7254|回復: 11
打印 上一主題 下一主題
收起左側(cè)

HX8357的9BIT的SPI連接STM32F103的問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:98880 發(fā)表于 2018-7-15 08:55 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
5黑幣
幾年前買了一塊天馬的屏,是HX8357的,最近有空拿出來用,發(fā)現(xiàn)原來給的DEMO為模擬9位SPI的,我試過很多種方法,還是沒有辦法用STM32F103的硬件SPI驅(qū)動起來,原因是屏需要9位的SPI,但F103的SPI只有8位和16位的模式,有沒有辦法可以改庫函數(shù)讓他支持9位的模式呢?


d0d80167098ac2535de8497a5d240662_889.png (2.37 KB, 下載次數(shù): 173)

d0d80167098ac2535de8497a5d240662_889.png

HX8357_9BIT_SPI.png (21.24 KB, 下載次數(shù): 162)

HX8357_9BIT_SPI.png

最佳答案

查看完整內(nèi)容

顯示屏的8bit/9bit 可以通過跳線來選擇的, 9bit軟件不好寫, 可以按hx8357的規(guī)格書來改成8bit spi. 最終的顯示效果幾乎沒什么分別.
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:517951 發(fā)表于 2018-7-15 08:55 | 只看該作者
顯示屏的8bit/9bit 可以通過跳線來選擇的, 9bit軟件不好寫, 可以按hx8357的規(guī)格書來改成8bit spi. 最終的顯示效果幾乎沒什么分別.

無標題.png (15.65 KB, 下載次數(shù): 51)

無標題.png
回復

使用道具 舉報

板凳
ID:469589 發(fā)表于 2022-4-11 20:50 | 只看該作者
最后問題解決了嗎?期待后續(xù)結(jié)果。
回復

使用道具 舉報

地板
ID:123289 發(fā)表于 2022-4-12 10:47 | 只看該作者
提示:庫也是程序。
回復

使用道具 舉報

5#
ID:469589 發(fā)表于 2022-5-12 10:44 | 只看該作者
STM32F030有9位等多位數(shù),但是我不會用!
并且由于容量小,做不了幾個程序。
回復

使用道具 舉報

6#
ID:1026496 發(fā)表于 2022-5-14 22:18 | 只看該作者
可以設置 8 位還是9位
回復

使用道具 舉報

7#
ID:797821 發(fā)表于 2022-5-17 17:32 | 只看該作者
因為這9bit 的SPI 是因為沒有RS 引腳,所以需要多一位來區(qū)分是送cmd 還是data .當?shù)?位為0時,傳送的是cmd . 為1時傳送的是data (注:cmd 是指寄存器地址,data 是數(shù)據(jù))。 好多年沒有弄這個了,我手上還有之前的寫的函數(shù)。你可以參考看看能不能用。

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;
}
回復

使用道具 舉報

8#
ID:624769 發(fā)表于 2022-5-17 17:50 | 只看該作者
用硬件是可以用的,但是不能用通用的"庫", 要用你自己寫的"庫",當然,你也可以找找有沒有通用的9位的"庫", 反正, 我從來不用 "函數(shù)庫", 搞明白底層原理, 自己寫函數(shù)自由度和效率不是更高?
回復

使用道具 舉報

9#
ID:469589 發(fā)表于 2022-11-6 09:29 | 只看該作者
似乎很有道理。
回復

使用道具 舉報

10#
ID:469589 發(fā)表于 2023-3-8 13:27 | 只看該作者
yaoyao2022 發(fā)表于 2022-5-14 22:18
可以設置 8 位還是9位

設置沒有問題,不知道怎么產(chǎn)生9位數(shù)據(jù)到寄存器?
那一位怎么操作后組裝到發(fā)送“字”中,因為STM32只有8、16、32位操作,9位是怎么組裝而成的?!
回復

使用道具 舉報

11#
ID:98880 發(fā)表于 2023-11-26 22:28 | 只看該作者
GlenXu 發(fā)表于 2023-3-8 13:27
設置沒有問題,不知道怎么產(chǎn)生9位數(shù)據(jù)到寄存器?
那一位怎么操作后組裝到發(fā)送“字”中,因為STM32只有8 ...

對了,我問這個問題的本意也是想知道如何用硬件的SPI輸出9位,畢竟硬件的方式速度很快,而不是用IO模擬。
回復

使用道具 舉報

12#
ID:469589 發(fā)表于 2024-5-10 22:03 | 只看該作者
是的!
重點是如果中斷多或者時間不好分配時,只能用硬件,便于調(diào)度,但就是不知道怎么用8位或16位發(fā)送9位的數(shù)據(jù)。即便時組裝好了,也沒法實現(xiàn)發(fā)送。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表