当前位置:网站首页>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之定时机制
- Encapsulate servlet unified processing request
- XML learning notes
- Using physical information neural network to solve hydrodynamics equations
- Flink 实战问题(七):No Watermark(Watermarks are only available EventTime is used)
- 小白看MySQL--windows环境安装MySQL
- Com. Faster XML. Jackson. DataBind. Exc.mismatchedinputexception: tableau ou chaîne attendu. At [Source: X
- 墨者学院-SQL注入漏洞测试(报错盲注)
- 【UVM实战 ===> Episode_3 】~ Assertion、Sequence、Property
- The fourth bullet of redis interview eight part essay (end)
猜你喜欢

Review the old and know the new -- constant renewal at normal temperature

2022年地理信息系统与遥感专业就业前景与升学高校排名选择

Redis detailed tutorial

万字详解-MindArmour 小白教程!

解决STC8G1K08程序不能运行的问题和端口配置

In depth understanding of UDP in the transport layer and the use of UDP in sockets

Concepts de base de données Oracle

The most complete hybrid precision training principle in the whole network

Using physical information neural network to solve hydrodynamics equations

Special topic II on mathematical physics of the sprint strong foundation program
随机推荐
技术干货|什么是大模型?超大模型?Foundation Model?
Competition Registration | one of the key ai+ scientific computing competitions - China open source scientific software creativity competition, competing for 100000 bonus!
idea 热启动失效解决方案
光谱共焦如何测量玻璃基板厚度
MATLAB data type - character type
Skills needing attention in selection and purchase of slip ring
CEC-I 中华学习机使用说明与问答
What are the skills and methods for slip ring installation
Freescale 单片机概述
The fourth bullet of redis interview eight part essay (end)
Record a bug caused by a line break
CPU的异常处理
【Mysql】时间字段默认设置为当前时间
Amway! How to provide high-quality issue? That's what Xueba wrote!
Understanding of "the eigenvectors corresponding to different eigenvalues cannot be orthogonalized"
滑环安装有哪些技巧和方法
统一结果集的封装
目前哪个证券公司炒股开户是最好最安全的?
Simulation of delta variant strain of novel coronavirus (mindsponge application)
Lambda表达式