2717358 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

Bubble, bubble, toil and cuddle !!!

全173件 (173件中 1-10件目)

1 2 3 4 5 6 ... 18 >

作りモノ

November 18, 2020
XML
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

digispark を使ってUSB 'DEL' キーを作ったのですが、なぜか子ども(弐)には受けが悪かったです。「キーはCherryの青軸でないと...」という子ども(弐)のこだわりがあるようです。(^^; メカニカルキーが好きなのかな。

っちゅうことで、千石電商でCherry MX-ENN-BC MX青軸1倍キー キートップ付きを買って、前と同様にdigispark を使って USB 'DEL' キーを作ってみました。

キーはCherryの青軸
キーはCherryの青軸

今回、基板はaitendoの特価の基板を使いました。Cherryの青軸の端子のピッチは2.54mmではないので、割と無理やり曲げて半田付けしました。(^^;; 他にも端子の横にでっぱりがあるので、これは切断しました。軸が通る部分の保護のようですが、軸が外に飛び出る訳ではないのでヨシとしました。

半田面
半田面

半田面は特に劣化してなかったので半田付けはしやすかったです。その割には仕上がりが汚い...
(^^;;

キートップを取り付けて完成
キートップを取り付けて完成

キートップが付いてたので取り付けて完成です。digisparkのスケッチは全く同一なので省略します。

確かに押し心地は良い


この動画のように押すとカチカチ感触があって、押し心地は良いです。この辺が子ども(弐)のこだわりなのでしょう。(^^;;
--- 18:40 ---






Last updated  November 18, 2020 06:40:29 PM
コメント(0) | コメントを書く


November 12, 2020
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

Shigezoneの激安(300円)版Arduino nano 互換ボードを動かしたで動くようになったArduino Nano互換ボードにPS/2キーボードを接続してキー入力のテストをしてみました。

PS/2キーボードをArduino Nanoに接続するためにPS/2のコネクタを取り付けなければならんのですが、USB〜PS/2変換キット [K-UPS2]のUSBコネクタを付けるところにピンヘッダを付けてブレッドボードに挿し、配線を行いました。

USB〜PS/2変換キットのピン配置
USB〜PS/2変換キットのピン配置

上図のようなピン配置になってます。

PS/2キーボードをArduinoで扱うためのライブラリはいくつかあるのですが、Arduino_PS2Keyboardというライブラリを使わせてもらいました。このページの「↓Code」と書いてあるところをクリックしてから「Download ZIP」を押してArduino_PS2Keyboard-master.zipをダウンロードします。このファイルを解凍すると出てくるPS2KeyboardというフォルダをC:¥Program Files (x86)¥Arduino¥librariesの中にコピーします。これでライブラリが使えるようになります。

PS/2側 → Arduino Nano
GND → GND
CLK → D3 (ホントは10kΩぐらいで+5Vにプルアップする)
DAT → D8 (ホントは10kΩぐらいで+5Vにプルアップする)
+5V → +5V

のように接続して、以下のスケッチを動かすと、PS/2キーボードで打った文字が液晶上に表示されます。液晶(ST7032)とArduino Nanoとの結線はaitendoのI2C/SPI両用キャラクタ液晶を組み立てたの通りに行います。


#include <Wire.h>
#include <ST7032.h>
#include <PS2Keyboard_stm32.h>

const int DataPin = 8;
const int IRQpin = 3;

PS2Keyboard keyboard;
ST7032 lcd;

int x, y;

void setup() {
// put your setup code here, to run once:
keyboard.begin(DataPin, IRQpin);
lcd.begin(16,2);
lcd.setContrast(60);
lcd.clear();
}

void loop() {
char c;
// put your main code here, to run repeatedly:
if (keyboard.available()) {
c = keyboard.read();
lcd.setCursor(x, y);
lcd.write(c);
x++;
if (x > 15) {
x = 0;
y++;
if (y > 1) {
y = 0;
}
}
}
}


PS/2キーボードの入力が液晶に表示される
PS/2キーボードの入力が液晶に表示される

写真ではわかりにくいので、動画も撮ってみました。

PS/2キーボード入力→液晶の動画


これで、Arduino Nano単体でキーボード入力できることが確認できました。これは一応、前振りの予定。(^^;
--- 18:45 ---






Last updated  November 12, 2020 06:46:56 PM
コメント(0) | コメントを書く
November 9, 2020
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

子ども(壱)が大学のリモート授業で使ってるdynabookの液晶を割ってしまったようです。(^^; 大学指定機種で生協で買ったのである程度の保証はあるようなのですが... 緊急措置として授業を受けるのに嫁はんのVersaPro VC-Mを使ってるようです。
---

Shigezone[激安版] Arduino Nano互換ボードLGT8F328Pを買っておいたので、使ってみることに。普通の(?)互換ボードはUSB端子がminiBらしいのですが、Shigezoneの激安互換ボードのUSB端子はmicroBです。地味にうれしい。

互換品やからArduino IDE でボードをArduino Nanoを選んでスケッチを書き込めば動くんやろう、と思ってたら甘かったです。(^^;; ボードが返事しないよ、みたいなエラーが出て書き込めません。

やっぱりCPU自体が互換品(LGT8F328P)なのでボード情報などをArduino IDEに教えてやらないと認識してくれないようです。Google先生にLGT8F328Pで訊いてみると、LGT8f328P Arduino互換ボードを使ってみるというページにたどり着きました。このページに書いてあるように、ダウンロードページの一番下にあるLarduino_HSP_latest.rarをダウンロードします。

このrarファイルを解凍すると、hardwarelibrariessketchesの3つのフォルダとinstall.txtが出てきます。 install.txt に書いてある通り、hardwareとlibrariesをC:¥Program Files (x86)¥Arduinoの下のhardwareとlibrariesの下にコピーすればよいようですが、hardwareの中にあるpackage_index_bundled.jsonplatform.keys.rewrite.txtは上書きしたくなかったので、hardwareの中にあるLGTというフォルダだけhardwareの中にコピーしました。librariesの方は全部のフォルダをコピーしても重複は無かったので大丈夫そうです。

これで、Arduino IDEの[ツール][ボード]からたどって、LGT8F328P-LQFP32MiniEVBをボードとして選べば、スケッチを書き込めるようになりました。

LGT8F328P-LQFP32MiniEVBを選ぶ
LGT8F328P-LQFP32MiniEVBを選ぶ

試しにaitendoのI2C/SPI両用キャラクタ液晶を組み立てたで使った結線とスケッチを使って実行したのが下の写真です。

aitendoのI2C液晶を駆動するスケッチを実行
aitendoのI2C液晶を駆動するスケッチを実行

ピン数は少ないですが、Arduino Unoより小さくてブレッドボード1枚に色々収めることができるので便利そうです。

今度Shigezoneに行ったときに[激安版] Arduino Nano互換ボードLGT8F328Pを何枚か買っておこう。ピンヘッダが付属してるとなおよいのですが、価格的には難しいかな。(^^;;
--- 19:10 ---






Last updated  November 9, 2020 07:23:44 PM
コメント(0) | コメントを書く
November 8, 2020
カテゴリ:作りモノ
今日は晴れ。

aitendoの移転セール(11月)で I2C/SPI両用液晶モジュール(16x2) [G1812M2] が特価350円で売ってたので2つ買いました。この商品、モジュール、と書いてありますが、自分で組み立てる必要がありました。(^^;

G1812M2の中身
G1812M2の中身

液晶モジュール、LEDバックライトモジュール、取付用の基板、チップ抵抗1つとチップコンデンサ2つ、が入ってました。これを順に基板に取り付けていきます。

まずはチップ部品から
まずはチップ部品から

まずはチップ抵抗とチップコンデンサを取り付けます。1608サイズぐらいの部品でランドも余裕をもって作ってあるので、老眼で見えないのを除けば(^^)、そんなに難易度は高くありませんでした。ランドに予備はんだを少ししておくのがよいようです。

次はLEDバックライトモジュール
次はLEDバックライトモジュール

次にLEDバックライトモジュールを取り付けます。A(アノード), K(カソード)と書かれたランドはありますが、部品面からこのランドにリード線を通すのではなく、裏面にリード線を折り曲げてはんだ付けするような格好になります。どっちのリード線がアノードなのかカソードなのか覚えてない(長さで決まってるはず)ので、実際に5Vをかけてみて光る面を上になるようにして取り付けました。(^^;; 取り付ける前に液晶パネルをはめてみて、バックライトがちゃんと液晶面にくるように確認しておいた方がいいでしょう。

液晶パネルをはんだ付け
液晶パネルをはんだ付け

最後の部品は液晶パネルです。ピンをランドに挿し込んではんだ付けするだけです。また、私はI2C接続の液晶として使いたかったので、I2Cと書かれた方のランドをはんだで短絡させました。

ヘッダピンは付属してない
ヘッダピンは付属してない

ブレッドボードに挿して使いたかったので、手持ちのヘッダピンを取り付けました。

以上で液晶モジュールの組み立ては完了です。

この液晶モジュールはコントローラICがST7032が使われているので、aitendoのG1812M2のページの下の方に書いてあるように、
I2C液晶のArduinoライブラリ – ST7032
を使わせてもらいました。Arduino UNO互換ボードとの接続もG1812M2のページの下の方に書いてあるように行います。

テストに使用したスケッチ

#include <Wire.h>
#include <ST7032.h>

ST7032 lcd;
int chr = 0x20;
int cnt = 0;

void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
lcd.setContrast(60);
lcd.print("Hello, world!");
}

void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(0,1);
lcd.print(cnt++);
lcd.setCursor(15,0);
lcd.write(chr);
chr = (++chr > 256) ? 0x20 : chr;
delay(1000);
}


スケッチを実行するとこんな感じで表示されます。

テストスケッチを実行中
テストスケッチを実行中

上段右端には0x20以上の内蔵キャラクタを表示しています。カタカナもキャラクタとしては存在してるようです。

っちゅうことで、aitendoの16x2のI2Cキャラクタ液晶G1812M2がちゃんと動作することが確認できました。
--- 13:45 ---






Last updated  November 8, 2020 01:47:20 PM
コメント(0) | コメントを書く
November 7, 2020
カテゴリ:作りモノ
今日は曇り。

aitendoが12月に店舗を移転するので、11月中は店舗で移転セールをやってます。店内の品物20%引。その他、特価品が色々売ってました。

その中で、 ★特売品★キャラクタ液晶モジュール(16文字x1行) [WD-A1601M] っちゅうのが、箱にいっぱいあったので、2つばかり買ってみました。

詳細不明、っちゅうことですが、端子は16ピンです。

WD-A1601Mのピン配置
WD-A1601Mのピン配置

これはパラレル接続(?)の液晶のピン配置と似ているなぁ、っちゅうことで、

1番ピン:VSS
2番ピン:VDD
3番ピン:V0
4番ピン:RS
5番ピン:R/W
6番ピン:Enable
7番ピン:DB0
8番ピン:DB1
9番ピン:DB2
10番ピン:DB3
11番ピン:DB4
12番ピン:DB5
13番ピン:DB6
14番ピン:DB7
15番ピン:NC
16番ピン:NC

と予想して、Shigezoneで買ったArduino Uno互換ボードにLCDを接続してみたと同様にArduino互換ボードに配線して、スケッチを動かしてみました。コネクタのどこが1番ピンかはテスタで確認してください。(^^;

すると、あっさり文字表示することができました。

hello, world!を表示
hello, world!を表示

っちゅうことで、WD-A1601Mはバックライトは無いものの16x1表示の液晶として使えることが分かりました。コネクタが付いてて配線しやすいのがいいですね。

16x1でいいから安い液晶表示器が欲しい方はaitendoの移転セールで!
--- 14:55 ---






Last updated  November 7, 2020 02:55:57 PM
コメント(0) | コメントを書く
October 25, 2020
カテゴリ:作りモノ
今日は晴れて清々しい。

Longan Nano のシリアル通信に色々トライしていますが、ソースファイルを公開しやすくするため、GitHubで管理したいなぁ、と思いました。Windows上でGitをコマンドラインで使うのも何かめんどくさそうなので、何かGUIはないかなぁ、と探していたら、Sourcetreeというツールがあるのが分かりました。

っちゅうことで、GitHubとSourceTreeの連携とプッシュ・プル操作とか簡単Git入門02 ローカルファイルをリポジトリとして指定するなど色々なところを参考に、Sourcetreeをインストール、Longan Nanoのプロジェクトのソースフォルダをローカルリポジトリに指定して GitHubにソースファイルをプッシュするところまでできました。

変更したファイルをコミットしてプッシュ、という単純な作業しかしてませんが、コマンドラインで操作するよりはだいぶ楽な気がします。本格的なところはコマンドラインでやらないといけないのかもしれませんが... (^^;

っちゅうことで、GitHub上に2つのリポジトリを作成しました。

GitHub上のLongan Nano シリアル受信サンプル
1キャラクタをシリアル受信して、Longan Nanoの画面に表示するとともに、端末側にエコーバックするソースファイルです。

GitHub上のLongan Nano シリアル受信サンプル(DMA使用)
16キャラクタをシリアル受信したらDMA転送で読み込むソースファイルです。結果はLongan Nanoの画面と端末側に表示されます。

まだバグとか分からないことがありますが、とりあえず情報共有っちゅうことで。(^^;;
--- 12:10 ---






Last updated  October 25, 2020 12:11:09 PM
コメント(0) | コメントを書く
October 15, 2020
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

Longan Nano の USART を試してみたときに、usart_data_receive(USART0)で一度データを読み込んでしまうと、リードバッファが空でないフラグがリセットされてしまい、TeraTermなどからファイル送信したデータは最初の1文字しか読めない、っちゅうことが分かりました。GD32VF103 User ManualのUSARTの項目を見ても、

The RBNE bit is cleared by a read operation on the USART_DATA register, whatever it is performed by software directly, or through DMA.
「ソフトウェアから直接でも、DMA転送によってでもUSART_DATAレジスタを1回読む動作をするとRBNEビットはクリアされます。」

と書いてあるので、仕方ないことのようです。

ただし、DMA転送で読んだときはどのように読めるのかはやってみなければ分からないので、試してみることにしました。

まだ途中段階ですが、

(1) rcu_periph_clock_enable(RCU_DMA0);でDMA0に電源を供給する(←ココ大事!!)
(2) dma_parameter_structっちゅう型の構造体にパラメータをセットしてDMAパラメータの初期化をする(DMA0のチャネル4がUSART0に対応するらしい)
(3) DMA割込をセットする
(4) USART0の割込をセットする
(4) usart_dma_receive_config(USART0, USART_DENR_ENABLE)でUSART0でDMAを使う設定にする
(5) USART0の割込フラグが立ったら、DMA転送を有効にする
(6) DMA転送フラグが終了になったら、転送先の配列にデータが格納される
(7) DMA転送フラグをクリアする
(8) DMA転送を無効にする
(9) DMAパラメータの初期化をする
(10) (5)~(9)をぐるぐる回る

といった概略の流れでDMA転送によるUSART0の受信はできたように見えます。まだ、先頭文字が欠けたり化けたり、とか色々謎な現象は起きているのですが、DMA転送できているのは確かです。

ただ、DMA転送を有効にすると指定した転送バイト数に達するまで(USART受信バッファに必要バイト数のデータが溜まるまで)転送が終わらない、っちゅう難点もあります。(^^; まぁ、そらそやわな。

っちゅうことで、DMA転送によるUSART受信に果たして価値があるのか悩んでいるところです... (^^;;
--- 20:15 ---






Last updated  October 15, 2020 08:15:33 PM
コメント(0) | コメントを書く
October 11, 2020
カテゴリ:作りモノ
今日は晴れ時々曇り。

ShigezoneでLongan NanoをPCにシリアル接続するためのUSB-シリアル変換器を買ったので、Longan Nano を PCに接続して USART を試してみました。

Longan Nano と USB-シリアル変換器の接続は、

R0 <--> TXD
T0 <--> RXD
GND <--> GND

のようにRX/TXをクロスに接続するだけです。制御線を使ってないから実際はUART通信になります。

Longan NanoとUSB-シリアル変換器の接続
Longan NanoとUSB-シリアル変換器の接続

Longan Nano の USART によるPCへの文字出力(USARTの送信)については、久しぶりにLongan Nanoを参考にさせて(パクらせて(^^))いただきました。

受信については記述してるページがほとんど無いので、

.platformio¥packages¥framework-gd32vf103-sdk¥GD32VF103_standard_peripheral¥Source

にあるgd32vf103_usart.cを見たら、USARTの割込有効化(usart_interrupt_enable)、USARTの割込フラグ取得(usart_interrupt_flag_get)、USARTからの受信(usart_data_receive)の関数があることが分かりました。

使い方としては、

usart_interrupt_enable(USART0, USART_INT_FLAG_RBNE);

でUSART0の受信バッファが空でないことを示す割込をイネーブルにして、

usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE) == SET

USART0の当該割込がセットされてる間に、

c = usart_data_receive(USART0);

USART0からデータを読み込めばよい(らしい)ということが何となく分かりました。どっか間違ってる可能性もあるのですが...

っちゅうことで、久しぶりにLongan Nanoでコピーしてるサンプルプログラムのソースがプロジェクトフォルダにあるのを前提に下記のソース(main.c)をコンパイルしてLongan Nano に書き込んでみました。


#include "lcd/lcd.h"
#include "gd32v_pjt_include.h"
#include <stdio.h>
#include <string.h>

void init_uart0(void)
{
/* enable GPIO clock */
rcu_periph_clock_enable(RCU_GPIOA);
/* enable USART clock */
rcu_periph_clock_enable(RCU_USART0);

/* connect port to USARTx_Tx */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
/* connect port to USARTx_Rx */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);

/* USART configure */
usart_deinit(USART0);
usart_baudrate_set(USART0, 115200U);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_enable(USART0);

// usart_interrupt_enable(USART0, USART_INT_RBNE);
}

int main(void) {
uint16_t c;
u8 x = 0, y = 0;

// LED output setting
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_GPIOC);
gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);
gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1|GPIO_PIN_2);

// initialize USART0
init_uart0();
// initialize OLED
Lcd_Init();
// lights LEDs
LEDR(1); LEDG(1); LEDB(1);
// clear OLED
LCD_Clear(BLACK);
// enable read buffer not empty interrupt flag of USART0
usart_interrupt_enable(USART0, USART_INT_FLAG_RBNE);

while (1) {
// if read buffer is not empty
if (usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE) == SET) {
// while read buffer is not empty
while (usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE) == SET) {
// read character from USART0
c = usart_data_receive(USART0);
// put character to USART0 (echo back)
_put_char((u8)c);
// put character to OLED
LCD_ShowChar(x, y, (u8)c, 1, WHITE);
// cursor control
x += 8;
if (x > 18 * 8) {
x = 0;
y += 16;
if (y > 4 * 16) {
LCD_Clear(BLACK);
y = 0;
}
}
}
// if read buffer is empty
} else {
// flip LEDs
LEDR_TOG; delay_1ms(20);
LEDG_TOG; delay_1ms(20);
LEDB_TOG; delay_1ms(20);
}
}
}

// put a character to USART0
int _put_char(int ch)
{
usart_data_transmit(USART0, (uint8_t) ch );
while ( usart_flag_get(USART0, USART_FLAG_TBE)== RESET){
}

return ch;
}

#include <stdarg.h>
void usart_printf(const char *fmt, ...) {
char buf[100];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);

char *p = buf;
while( *p != '\0' ) {
_put_char(*p);
p++;
}
}



上記ソースコードで実現してるのは、PC上のターミナルソフトから入力した文字をLongan NanoのOLED上に表示すると共にターミナルソフトにエコーバックする、っちゅう機能です。

一応、ターミナルソフトからポチポチ入力した文字はOLEDに表示され、ターミナルソフトにエコーバックされるのですが、ターミナルソフトからファイル送信した文字列がうまく表示できません。受信バッファの最初に一文字しか読めてない感じです。割込が起きたときに受信バッファを一旦まとめてどっかに読みだしてそれからポチポチ表示なりエコーバックする必要があると思うのですが、受信割込とか受信バッファに関する情報が無く、手詰まりな状態です...

Longan Nano の USART 受信ができたとはいえ、まだまだちゃんとしたモノにはなってないので、何とかせんといかんなぁ。
--- 16:00 ---






Last updated  October 11, 2020 04:02:37 PM
コメント(0) | コメントを書く
September 26, 2020
カテゴリ:作りモノ
今日は曇り時々晴れで秋らしい。

DELキーのキートップが欠損している mouse Pro NB370H (Core i5 5200U 2.2GHz, メモリ8GB, SSD)の DEL キーの代わりとなるデバイスを作ろうと、こないだShigezoneで digispark 互換品を 0.25千円で、千石電商で大きめのタクトスイッチとキートップを買ってきました。NB370HのDELキー、キートップが欠損しててもDELキーとしては機能するのですが、まぁ、そこは置いといて... (^^;

digispark にピンヘッダを半田付けして、P0とGNDの間にタクトスイッチをかましただけの回路をユニバーサル基板の切れ端を使って作成しました。

半田面:ちょっと強引な配線
半田面:ちょっと強引な配線

ユニバーサル基板のランドが酸化してて半田付けしにくかったです。(^^;; かなり汚い半田付けになってしまいました...

部品面:コンパクトにできた
部品面:コンパクトにできた

部品のサイズきちきちで作ったのでだいぶコンパクトにまとまりました。

Arduino開発環境を使って以下のスケッチをコンパイルしてdigisparkに書き込みます。

#include <DigiKeyboard.h>

#define PIN_DEL 0
#define KEY_DEL 0x4C

void setup() {
// put your setup code here, to run once:
pinMode( PIN_DEL, INPUT_PULLUP );
}

void loop() {
// put your main code here, to run repeatedly:
unsigned char pdel;

DigiKeyboard.sendKeyStroke(0);

pdel = digitalRead( PIN_DEL );

DigiKeyboard.update();

if (pdel == LOW) {
DigiKeyboard.sendKeyStroke( KEY_DEL );
}

DigiKeyboard.delay(200);
}


P0をプルアップ付の入力に設定し、タクトスイッチが押されてGNDに接続されたら(LOWになったら)、DELキーのキーコードを送る、というだけの内容です。digisparkに書き込むとき、USBポートによっては正常に認識されないことがあり、難儀しました。(^^;;

さて、NB370HにUSB 'DEL' キーを接続してみましょう。

NB370Hに接続したところ
NB370Hに接続したところ

最初接続してみたら、基板下に出っ張ってたピンヘッダのピンが若干邪魔だったので、短くカットしました。これでちょうどよい具合になりました。

他のUSBデバイスとも干渉しない
他のUSBデバイスとも干渉しない

USBマウスと並べて挿してみましたが、コンパクトに作ったおかげで干渉することなく使用できました。

USB 'DEL' キーのデモ


ちょっと分かりにくいですが、こんな感じでDELキーの代わりとして使うことができます。ボタンを押すと基板が少ししなるので、PCのUSB端子にちょっと負担がかかりそうな感じもします。(^^;;

まぁ、とりあえずはUSB接続のDELキーができた、っちゅうことで。
--- 15:15 ---






Last updated  September 26, 2020 08:42:29 PM
コメント(0) | コメントを書く
September 5, 2020
カテゴリ:作りモノ
今日は晴れて、そこそこ暑い。

前の週末にShigezoneで買った0.8千円の激安FPGAボード、Tang Nanoの開発環境を整えました。っちゅうても、SiPeed Tang Nanoの環境構築(Windows編)を参考に開発ツールのセットアップをしただけですが... (^^;

ただし、分かったことも幾つかあります。

(1) 最新版の開発ツールではSRAM/FlashともにFPGAへの書き込みができない(Unknown Cableというエラーが出る)。
(2) 旧バージョン(V1.9.3.02Beta)でもケーブル設定を適切にしないとFPGAのFlashへの書き込みができない。


(1)は参考にしたページにも書かれてたことなのですが、もっと新しいバージョンならいけるかも?とV1.9.6.02Betaをダウンロードして試してみたのですが、FPGAへの書き込み時にUnknown Cableというエラーが出て書き込みができません。SRAMへの書き込み、Flashへの書き込みいずれも同じエラーが出ます。

っちゅうことで、(2)のように旧バージョン(V1.9.3.02Beta)をインストールしなおして、FPGAへの書き込みを試してみました。SRAMへの書き込みでは問題なく書き込めたのですが、FPGAのFlashROMに書き込もうとしたら、書き込みプロセスが進みません... orz

設定で変えられるところはないかと色々探したところ、ケーブル設定が変えられそうです。

プログラマでケーブル設定を選択
プログラマのケーブル設定

上記のCableを選ぶとケーブル設定が開きます。

ケーブル設定
ケーブル設定

ここで、Portとして最初はGowin USB Cable (FT2CH)/0/B というのが選択されてたのですが、上図のようにGowin USB Cable (FT2CH)/1/Aに変更すると SRAM書き込みができるようになりました!

が、FlashROMへの書き込みを行うと書き込み動作が終わった後に、Error Finished, NOT wakes upっちゅうエラーが出て書き込みができません... orz Verifyオプションを付けて書き込んでみるとVerifyエラーが出るので、正しく書き込まれていない様子。

っちゅうことで、上記エラーでGoogle先生に訊いてみると、Sipeed Tang Nano を使ってみる。No.5 最新Toolで書き込めない原因判明っちゅうページを発見。ここに書かれているように、Frequency を 2.5MHzにしたらFlashROMへの書き込みもできるようになりました。

Frequency設定を変える
Frequency設定を変える

以上のように、最新版でないツールを使ってもハマりどころが色々あるので、注意しましょう。(^^;;

一応、書き込みはできて、(元とは違う)Lチカができるようになりました。

動作中のTang Nano
動作中のTang Nano
--- 13:35 ---






Last updated  September 5, 2020 01:38:19 PM
コメント(0) | コメントを書く
このブログでよく読まれている記事

全173件 (173件中 1-10件目)

1 2 3 4 5 6 ... 18 >

PR


Copyright (c) 1997-2020 Rakuten, Inc. All Rights Reserved.