QY20 表示部(LCD)を自作⑤:RP2040のPIO機能を使って、QY20の画像データ取得成功

2024/01/06

RP2040 YAMAHA QY20 実験 電子回路

 RP2040のPIOを使って、QY20の液晶表示用のFLM信号取得に成功。アセンブラなしに、Cのみで、GPIO割り込み取得できました。

---
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
#define FLM 26 // GPIO26
void callback_flm() {
    gpio_set_irq_enabled(FLM, 0x08u, false); 
    printf("FLM Trigger %d\n", time_us_32());
    gpio_set_irq_enabled(FLM, 0x08u, true); 
}
int main() {
    stdio_init_all();
    gpio_init(FLM);
    gpio_set_dir(FLM, GPIO_IN);
    gpio_pull_down(FLM);
    gpio_set_irq_enabled_with_callback(FLM, GPIO_IRQ_EDGE_RISE, true, callback_flm); // 0x08 bit3 edge high
    while(true){
         printf(":");
         sleep_ms(10000);
    }
    return 0;
}
---

同じようにCP1トリガも取得でき、Cでも200usのトリガ処理が可能でした。

そして、本題のCP2トリガとデータ取得。これは、PIOで記述です。CP1とCP2の同期をとるため、FLM信号以外は、アセンブラ(ステートマシン)で並列コア処理させます。

あまりの高速処理のため、デバッグプリント文が追いつきません。バッファオーバーフローしてます。。。全体の動きをみると、表示データを取得できているようです。取りこぼしの可能性もあるので、表示部を組み込んでチェック。そのために、以前作ったMSP2807のプログラムをC言語に移植するのが、次の作業ですね。

QooQ