Arduino Megaを使用してBLEモジュールのスループットを計算しています。モジュールは3.3Vで動作するので、ロジックレベルシフタはBLEとArduinoの間にあります。 BLE UARTは115200に設定され、64Kbpsの速度でデータを送信しています(CC2540 BLEパケットスニッファを使用して検証済み)。 BLEによって送信されるパケットは、16進数でこの形式になっています:400102030405060708090A0B0C0D0E0F1011121323 {40 = @、23 =#}。私は100個のパケットを送信しています。これは私のコードの要約です。コードは低ビットレート32Kbpsでは正常に動作しますが、64Kbsでは動作しません(BLE接続間隔は10ms)。このビットレートでは結果は表示されません。Arduino Megaのビットレートが高い
void loop()
{
if(rxflag)
{
rxflag = false;
switch(rxState)
{
case get_first_header:
if(rxChar=='@')
{
startPoint=millis();
rxState=get_last_header;
}
break;
case get_last_header:
if(rxChar=='#')
{
packetNo++;
if(packetNo==100)
{
endPoint=millis();
totalTime= endPoint-startPoint;
Serial.print("Total Time of Packet=");
Serial.println(totalTime);
}
break;
}
}
}
void serialEvent1()
{
if (Serial1.available()>0)
{
rxChar = (char)Serial1.read();
rxflag = true;
}
}