当前位置:网站首页>3 - wire SPI Screen Drive
3 - wire SPI Screen Drive
2022-06-27 00:49:00 【NULL 1969.】
Préface
J'ai récemment étudié3LignespiMode de conduite de l'écran.La puce d'entraînement de l'écran estILI9488,Par rapport à4Ligne,3LignespiL'écran n'est pas utiliséDCÉcrivez les ordres/Écrivez la ligne de contrôle des données.DC=0Ça veut dire écrire une commande,DC=1Pour écrire des données.
3LignespiFormat des données

3LignespiOui.DCLes commandes sont placées sur chaque8Le BIT le plus élevé de données de bits.C'est encore un peu ennuyeux,Voici quelques exemples concrets.
Si elle est adoptéespiEnvoyer0x55,Généralement utiliséMSB,La façon dont le haut est devant.
AlorsSDA(MOSI)La ligne de données est comme ça:
01010101
Si vous voulezdcLes ordres,Et0x55Pour envoyer en deux octets,HypothèsesDC=1,EtSDA(MOSI)Les données sont les suivantes:
10101010 1
Faible octet Octets élevés
C'est l'équivalent de0x55Convertir en:0x80AA.En même temps, il doit être réglé dans un micro - ordinateur à puce uniquespiLes données sont les suivantes:9Bits.Après plusieurs tâtonnements,La formule de conversion est::
uint16_t data = (0x8000&(cmd<<15))|(0x7f&(cmd>>1)) ;
En particulier:esp32La fonction d'envoi doit être modifiée comme suit:
static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd)
{
esp_err_t ret;
spi_transaction_t t;
uint16_t data=0;
data = (0x8000&(cmd<<15))|(0x7f&(cmd>>1)) ;
memset(&t, 0, sizeof(t)); //Zero out the transaction
t.length=9; //Command is 8 bits
t.tx_buffer=&data; //The data is the cmd itself
ret=spi_device_polling_transmit(spi, &t); //Transmit!
assert(ret==ESP_OK); //Should have had no issues.
}
static void lcd_data_byte(spi_device_handle_t spi, const uint8_t cmd)
{
esp_err_t ret;
spi_transaction_t t;
uint16_t data=0;
data = (0x8000&(cmd<<15))|(0x80|cmd>>1) ;
memset(&t, 0, sizeof(t)); //Zero out the transaction
t.length=8; //Command is 8 bits
t.tx_buffer=&data; //The data is the cmd itself
ret=spi_device_polling_transmit(spi, &t); //Transmit!
assert(ret==ESP_OK); //Should have had no issues.
}
Ce n'est qu'à ce moment - là qu'il peut communiquer correctement avec l'écran . Cela a réduit la vitesse de communication , Difficile à adopter dmaTransfert de grandes quantités de données. La raison en est que chaque octet doit d'abord être démonté et assemblé en 2 Octets à envoyer .Et ses inconvénients, Il a fallu du temps pour régler ça .
Personnellement3Lignespi Les moyens de communication et leurs absurdités ,Très inefficace,Toujours honnête et pratique4LignespiOu un micro - ordinateur à puce unique8080 Interface pour conduire l'écran . Certains écrans DCUtilisation des brochesRSPour exprimer, L'auteur n'a pas compris au début , J'ai trouvé cet écran sans DCPin, Pour étudier 3Lignespi, Le taux de rafraîchissement de l'écran est trop faible , Rafraîchir un écran entier nécessite 10sHorloge.ConclusionRS=DC, Remplacer immédiatement par 4Lignespi,C'est pas vrai..
MaisILI9488 Le point le plus pittoresque de cette puce d'entraînement est l'utilisation de spiComment,Soutien uniquement8bitEt18bitFormat de couleur pour,Non pris en charge16bit. C'est le résultat de l'expérience , Il est écrit dans ses spécifications que 4LignespiHeure,Peut soutenir16bitCouleur,
Mais0x3AÉcrire0x05(16bit) L'écran ne montre pas ,Seulement0x3AÉcrire0x06(18bit)Heure, Pour afficher la couleur . C'est très déprimant, papa .
ILI9488 18 Format de couleur bit

D'habitude, c'est16Couleur du BIT, C'est pour ça que 18 La couleur du BIT doit être changée .Et ensuite passerspiEnvoyer. Le mode de conversion spécifique est
colors[0] = (color>>8)&0xf8;
colors[1] = (color>>3)&0xfc;
colors[2] = (color<<3)&0xfc;
Rouge au premier octet , Vert au deuxième octet , Bleu à trois octets en bas , Et tout est aligné haut . Position basse vide . L'écran s'affiche normalement après la conversion .
边栏推荐
猜你喜欢

简单快速的数网络(网络中的网络套娃)

Lwip之ARP模块实现

复杂数据没头绪?

Amway! How to provide high-quality issue? That's what Xueba wrote!

滑环选型选购时需要注意的技巧

What is the difference between the working principle of gas-liquid slip ring and other slip rings

这3个并发编程的核心,竟然还有人不知道?

Batch generate folders based on file names

kubernetes可视化界面dashboard

05 | 規範設計(下):commit 信息風格迥异、難以閱讀,如何規範?
随机推荐
“message“:“Bad capabilities. Specify either app or appTopLevelWindow to create a session“
当Transformer遇见偏微分方程求解
统计无向图中无法互相到达点对数[经典建邻接表+DFS统计 -> 并查集优化][并查集手册/写的详细]
记录一次换行符引起的bug
Network in network (dolls)
墨者学院-X-Forwarded-For注入漏洞实战
Kubernetes visual interface dashboard
Serial port debugging tool mobaxtermdownload
MATLAB data type - character type
敲重点!最全大模型训练合集!
USB协议中HID设备描述符以及键盘按键值对应编码表
Competition Registration | one of the key ai+ scientific computing competitions - China open source scientific software creativity competition, competing for 100000 bonus!
07 | 工作流设计:如何设计合理的多人开发模式?
05 | standard design (Part 2): how to standardize the different styles of commit information, which are difficult to read?
统一结果集的封装
Lambda expression
[vscode] setting sync, a plug-in for synchronizing extensions and settings
1+1<2 ?! HESIC论文解读
Encapsulate servlet unified processing request
用代码生成流程图,Markdown的使用方法