BL652 UART
純正のボードnRF52 PCA10040では、UARTのTXはP0.06、RXはP0.08に接続されている。これBL652ではP0.06は19番、P0.08は17番に接続されている。
これらをまたまたエナメル線で接続してやる。(どこでも本来よいのでGPIOのテストに使ったピンをアサインしても本当はよい)
【テストコードのビルト】
exampleの下にあるperipheralの中のuartをコピーする。
example以下に作った自身の作業フォルダーにコピーをとる。ここでは4_BL652_uartという名前にした。
pca10040のフォルダの下、\pca10040\blank\sesにある
uart_pca10040.emProject
を開いてやる。このままコンパイルするとエラーがいろいろ出るはず。
①flash_placement.xml
この中にある size=0x04を削除
②unknown type name '__printf_tag_ptr'のエラーは、retarget.cを削除
③ Projectを右クリック、OptionからCommonを選択して、LibraryでライブラリIOの部分をRTTを選択
これでコンパイルが通るはず。
【UARTテスト】
無事にビルトし、書き込みが出きていれば、エコーバックしてくるのが確認できる。(送った文字がそのまま画面に出てきて、qを入力すると停止する)
複数の文字の送信については、https://funasover.blogspot.com/2023/02/nrf-uart.html
ここまでのフォルダをコピーして、4_2_BL652_uartという名前をつけてみる。
uint8_t UART_TX_Buffer[UART_TX_BUF_SIZE];
複数送信するバッファを用意してやる。
末尾に、以下の関数uart_printを定義
void uart_print(uint8_t data_string[]){
static uint8_t str_array[256];
memcpy(str_array,data_string,strlen(data_string));
for (uint32_t i = 0; i < strlen(str_array); i++)
{
while (app_uart_put(str_array[i]) != NRF_SUCCESS);
}
memset(&str_array,0x00,UART_RX_BUF_SIZE);//clear str_array
}
whileの中を
while (true)
{
sprintf(UART_TX_Buffer,"This is a UART test.\n\r");
uart_print(UART_TX_Buffer);
nrf_delay_ms(500);
}
とでもしてやる。
コメント
コメントを投稿