mbed KL25Zのシリアル

ee9king に投稿

ふむ、どうもシリアル設定の8bit以外がサポートされていないようだが? うまく動かず悩むのをTerminalで見るとエラーはいてるし

++ MbedOS Error Info ++
Error Status: 0x80FF0144 Code: 324 Module: 255
Error Message: Assertion failed: data_bits == 8
Location: 0x5B71
File: /extras/mbed-os.lib/targets/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/serial_api.c+168
Error Value: 0x0
For more info, visit: https://mbed.com/s/error?error=0x80FF0144&tgt=KL25Z
-- MbedOS Error Info --

serial_api.cを探して該当のところを見てみたら・・

https://github.com/ARMmbed/mbed-os/blob/master/targets/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/serial_api.c

void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
    MBED_ASSERT((stop_bits == 1) || (stop_bits == 2));
    MBED_ASSERT((parity == ParityNone) || (parity == ParityOdd) || (parity == ParityEven));
    MBED_ASSERT(data_bits == 8); // TODO: Support other number of data bits (also in the write method!)

やることリストと思われるTODOがあるけど・・・

ParityにNone以外を設定すると、bit数を増加するような記載もあるが

    uint8_t parity_enable, parity_select;
    switch (parity) {
        case ParityNone: parity_enable = 0; parity_select = 0; break;
        case ParityOdd : parity_enable = 1; parity_select = 1; data_bits++; break;
        case ParityEven: parity_enable = 1; parity_select = 0; data_bits++; break;
        default:
            break;
    }

    だめってことか。

   

Databits=8にしてParity=Even設定で、プロアナで見ると、最上位ビットがEvenParityビットになっていて且つ8bitデータで動いているっぽい

いいのか、これ?

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。