SpresenseでLチカから始める (11) I/Oの初期電圧
OSをもたないマイコン・ボードのCPUは、電源を入れたらリセットがかかり、アプリケーションのプログラムが動き始めます。SpresenseはRTOS(リアルタイムOS)のNuttXが動き、つづいてArduinoのアプリケーションが動くので、UNOとはいくらか異なった立ち上がりになります。
Arduino UNOのI/Oの状態はこちらで調べました。ラズパイはこちらで調べました。ここでは、Spresenseの拡張ボードのI/O状態を調べます。Arduino IDE は1.8.6です。
●何もしないときのI/Oの初期状態
各ポートには何も接続しない状態で、Analog Discovery2のオシロスコープを使って電源ONから約10秒電圧をロギングします。スケッチは新規でファイルをオープンして、setup(){} と loop(){} に何も書かれていないものを書き込みました。オシロスコープのGND端子は、GPIOピンの中のGNDが二つ並んだ一方に接続しました。Spresenseは5V動作です。
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
ピンをつなぎかえた後、約-4秒のところでリセット・ボタンを押しています。
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
0番 | UART(Rx) | HIGH | HIGH | - |
0番UART Spresenseの波形
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
1番 | UART(Tx) | HIGH | HIGH | 0番と同じ |
2番 | - | LOW | HIGH | 0番と同じ |
3番 | PWM | LOW | LOW-HIGH-LOW | リセット後約1秒間HIGH。HIGHの部分は時間軸を拡大してもHIGH。その後LOW |
3番PWM Spresenseの波形
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
4番 | - | LOW | HIGH | 0番と同じ |
5番 | PWM | LOW | LOW-HIGH-LOW | 3番と同じ |
6番 | PWM | LOW | LOW-HIGH-LOW | 3番と同じ |
7番 | - | LOW | HIGH | 0番と同じ |
8番 | - | LOW | HIGH | 0番と同じ |
9番 | PWM | LOW | LOW-HIGH-LOW | 3番と同じ |
10番 | - | (PWM)LOW | HIGH | 0番と同じ |
11番 | - | (PWM)LOW | HIGH | 0番と同じ |
12番 | - | LOW | HIGH | 0番と同じ |
13番 | - | 内部LED接続あり。一瞬HIGHのちLOW | HIGH | 0番と同じ |
GND | - | 0V | 0V | - |
Aref | 外部リファレンス電圧入力 | 0V | HIGH | - |
16番 | I2C(SDA) | LOW | HIGH | 0番と同じ |
17番 | I2C(SCL) | LOW | HIGH | 0番と同じ |
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
A5 | アナログ入力 | LOW | LOW | - |
A4 | アナログ入力 | LOW | LOW | - |
A3 | アナログ入力 | LOW | LOW | - |
A2 | アナログ入力 | LOW | LOW | - |
A1 | アナログ入力 | LOW | LOW | - |
A0 | アナログ入力 | LOW | LOW | - |
Vin | 外部電源からの電圧 | LOW | HIGH | ノイズ700mVp-p |
GND | GND | - | - | - |
GND | GND | LOW | LOW | ノイズ500mVp-p |
Vout | 5V | (5V)HIGH | HIGH | 5V |
3.3V | 3.3V | HIGH | HIGH | 3.3V |
RST | Reset | LOW | LOW | - |
IOREF | I/Oピンの電圧を外部へ知らせる | HIGH | HIGH | - |
名無し(予約) | - | LOW | LOW | ノイズ700mVp-p |
(※)ノイズは、裏面を手で触っていたのかもしれない。
●PWMを出力するときのI/Oの初期状態
次のスケッチを利用して、I/Oの状態を観測します。
#define pinNumber 3
void setup() {
pinMode(pinNumber,OUTPUT);
}
void loop() {
analogWrite(pinNumber,125);
}
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
0番 | UART(Rx) | リセット後2秒HIGHになり、その後LOW | HIGH | - |
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
1番 | UART(Tx) | リセット後2秒HIGHになり、その後LOW | HIGH | 0番と同じ |
2番 | - | リセット直後約2秒200~700mVp-pのノイズが出た後LOW | HIGH | 0番と同じ |
3番 | PWM | リセット後1.7秒LOWになり、その後PWM | LOW-HIGH-LOW | リセット後約1秒間HIGH。その後約200ms間LOWになった後PWM |
3番PWM Spresenseの波形
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
4番 | - | リセット直後約2秒400mVp-pのノイズが出た後LOW | HIGH | 0番と同じ |
5番 | PWM | リセット後1.7秒LOWになり、その後PWM | LOW-HIGH-LOW | 3番と同じ |
6番 | PWM | リセット後2秒LOWになり、その後PWM | LOW-HIGH-LOW | 3番と同じ |
7番 | - | リセット直後約2秒400mVp-pのノイズが出た後LOW | HIGH | 0番と同じ |
8番 | - | リセット直後約2秒400mVp-pのノイズが出た後LOW | HIGH | 0番と同じ |
9番 | PWM | リセット後2秒LOWになり、その後PWM | LOW-HIGH-LOW | 3番と同じ |
10番 | - | (PWM)リセット後2秒LOWになり、その後PWM | HIGH | 0番と同じ |
11番 | - | (PWM)リセット後2秒LOWになり、その後PWM | HIGH | 0番と同じ |
12番 | - | リセット直後約2秒400mVp-pのノイズが出た後LOW | HIGH | 0番と同じ |
13番 | - | 内部LED接続あり。一瞬HIGHのちLOW | HIGH | 0番と同じ |
13番 UNOの波形
Aref | 外部リファレンス電圧入力 | - | HIGH | 0番と同じ |
16番 | I2C(SDA) | - | HIGH | 0番と同じ |
17番 | I2C(SCL) | - | HIGH | 0番と同じ |
ピン番号 | 機能 | UNO | Spresense | 備考 |
---|---|---|---|---|
A5 | アナログ入力 | リセット直後約2秒600mVp-pのノイズが出た後LOW | LOW | - |
A4 | アナログ入力 | リセット直後約2秒600mVp-pのノイズが出た後LOW | LOW | - |
A3 | アナログ入力 | リセット直後約2秒600mVp-pのノイズが出た後LOW | LOW | - |
A2 | アナログ入力 | リセット直後約2秒600mVp-pのノイズが出た後LOW | LOW | - |
A1 | アナログ入力 | リセット直後約2秒600mVp-pのノイズが出た後LOW | LOW | - |
A0 | アナログ入力 | リセット直後約2秒600mVp-pのノイズが出た後LOW | LOW | - |
●周波数
Arduino UNOの3、9、10、11番ピンは約491Hz、5、6番は約978Hzです。複数のピンを同時に使っても、全PWMピンを使っても全ピンに出力が出ます。
Spresenseの3、5、6、9番ピンは約490Hzです。全PWMピンを使っても全ピンに出力が出ます。