60615
spresense初心者です。spresense sdkを使用して、arduino IDEのsoftware
serialのように違うGPIOピンでserial通信のポートを増やしたい場合、どのような方法が考えられるでしょうか？
CC BY-SA 4.0
2019-10-28T00:04:54.550
60027
2019-11-18T01:26:24.593
36346
question
spresense
spresense sdkでgpioピンの役割を変更する方法
Spresense
SDKの中に、SPIのbitbangは見つけましたがSerialのbitbangは用意されてなさそうです(たぶん)。ですので、Software
Serialを行う場合は自作するか、どこかからもってきて移植するかしかないですね(たぶん)  
<https://github.com/pfalcon/uart-bitbang>  
<https://github.com/adrianomarto/soft_uart>  
もしくはSpresense ArduinoのSoftware Serialライブラリを持ってきてSDKへ移植する方が早いのかもしれません。

ただ、SpresenseのSerial端子は、Arduino
UNOと違って、シリアルモニタ用のSerialとは独立して、メインボード/拡張ボード側に別のUART2(Serial2)端子が出ているのでそれが使えます。PCとの接続であれば、拡張ボード側のUSB端子でUSBSerialライブラリというものを見つけたのでこれも使えそうです。これはArduino用のライブラリですが、  
<https://qiita.com/baggio/items/e62cb26630fdb78881f2>  
SDKであればこちらですね。  
<https://github.com/sonydevworld/spresense/tree/master/sdk/system/cdcacm>

gpioの叩き方は、こちらが参考になると思います。  
<https://github.com/sonydevworld/spresense/blob/master/sdk/system/gpio/gpio_main.c>

シンプルにboard_gpio_read(), board_gpio_write() 関数を使って読み書きができると思います。

ピンの役割をGPIOに設定する必要があるので、board_gpio_config()でmodeを0に設定する必要がありそうです。

たぶんこんな感じ(間違っていたらどなたかご指摘をお願いします^^;

<<読み出しの場合>>  
board_gpio_config(PIN_XXX, 0, true, true, PIN_FLOAT);  
と設定しておいて、  
value = board_gpio_read(PIN_XXX, 0, true, true, PIN_FLOAT);  
で 1 or 0 が読み出せる

<<書き込みの場合>>  
board_gpio_config(PIN_XXX, 0, false, true, PIN_FLOAT);  
と設定しておいて、  
board_gpio_write(PIN_XXX, 1 or 0);  
で 1 or 0 の書き込みができる

ピン番号はpin.hに定義されています  
<https://github.com/sonydevworld/spresense/blob/master/sdk/bsp/include/arch/chip/pin.h>

ご参考まで。
CC BY-SA 4.0
2019-11-18T01:26:24.593
60615
2019-11-18T01:26:24.593
31378
60027
answer