LPC1768無法收到IMU(3DM-GX1)訊號

21 Nov 2018

各位先進好 想請問當 LPC1768 傳送16進位的指令後,IMU理論上要回傳訊號,但LPC板似乎沒有收到任何訊號,已確認下列功能正常:

(1)IMU正常(已使用電腦上程式驗證輸入指令後,IMU會回傳所要的訊號)

(2)已檢測過連接LPC板與IMU的RS232轉TTL板正常

(3)有使用過有buffer和interrupt功能的程式庫,MODSERIAL、BufferedSerial,一樣無效果

想請問是不是程式有錯誤或是IMU與LPC1768不相容?

#include"mbed.h"

Serial pc(USBTX,USBRX);
Serial gy(p9,p10);
DigitalOut led(LED1);

int main(){
    gy.baud(38400);
    pc.baud(38400);
    gy.format(8,Serial::None,1);

    int i=0;
     gy.putc(0xF1);//輸入指令,會回傳5個byte,分別為F1、dataMSB、dataLSB、checksumMSB、checksumLSB
    while(i!= 5){
           if(gy.readable()){
                 pc.putc(gy.getc());
                 i++;
                 led != led;
           }
     }
}

IMU規格如下: http://files.microstrain.com/manuals/3DM-GX1%20Data%20Communication%20Protocol%203102.pdf

謝謝

22 Nov 2018

Hi Kai Fu,

程式碼看起來沒問題,以下有幾個建議可以試看看 - 改用RawSerial再試看看 - 如果有示波器或LA,看能不能抓一下gy的訊號 - 當執行完gy.putc(0xF1)後,是一直沒收到gy.readable()的回傳嗎?還是pc.putc()丟給pc的資料沒抓到而已?

有任何問題,歡迎繼續討論!

- Desmond, team Mbed

23 Nov 2018

陳先生 您好

感謝您的回覆,改用RawSerial後,IMU還是沒有回傳資料,

再使用邏輯分析儀檢測訊號後,檢測測出LPC板有提供正確的訊號,但IMU卻沒有回傳任何資料。

應該不會是電腦和LPC板的傳輸的16進位訊號不一樣吧?

謝謝

26 Nov 2018

如果uart的設定是一樣的,硬體連接也相同,就應該不會有訊號不同的問題,有確定電位是對的嗎?

是否可以分享一下用電腦連接以及用LPC1768接線的圖片呢?

下面是將mcu當做uart pass throught的程式碼,如果在電腦上已經有測試程式,或許也可以用這個方式來試看看,謝謝。

uart pass thru

#include "mbed.h"

// NRF52840_DK
Serial pc(USBTX, USBRX);
Serial device(p26, p27);

// main() runs in its own thread in the OS
int main() {
    pc.baud(115200);
    device.baud(115200);
    while (true) {
        if (pc.readable()) {
            device.putc(pc.getc());
        }
    
        if (device.readable()) {
            pc.putc(device.getc());
        }
    }
}
26 Nov 2018

您好

直接將PC端的資料給與IMU的寫法之前試過是不行的,

LP板能透過RS232轉TTL板與PC端RS232溝通,而PC端RS232又能與IMU溝通(傳送一樣的資料),

則RS232轉TTL板與IMU電位應該都是相等的,

三個Serial傳輸孔位皆試過、程式無錯誤下;RS232轉TTL板的RXD與LPC的RX相接、TXD與LPC的TX相接(為測試後有資料的接法,與

一般的TX接RX、RX接TX不同),接線圖如下:

圖一、LPC板與PC端RS232-USB線連接 /media/uploads/Kaifu/46836742_194031298194850_9136019772218015744_n.jpg /media/uploads/Kaifu/46782693_491964467958281_1168207095644815360_n.jpg

圖二、IMU透過RS232-USB線與電腦連接 /media/uploads/Kaifu/46863355_555831098174761_2032806152886026240_n.jpg

圖三、LPC板與IMU端RS232線連接 /media/uploads/Kaifu/47005834_326047578227270_5243741536079839232_n.jpg /media/uploads/Kaifu/46765698_513112712523636_4120838936589238272_n.jpg

謝謝

26 Nov 2018

你有usb-to-serial的cable嗎?如果用這種線用pc來控制的話能成功嗎?

03 Dec 2018

Hi Kaifu,

在你發問的https://os.mbed.com/questions/83245/LPC1768IMU3DM-GX1/這個問題我有最新的回應,不知道是否有幫助?

後續還有其他更新嗎?

11 Dec 2018

您好

我使用的晶片為MAX3232,電壓範圍為3V5V,另外也使用了arudino測試過,一樣無法運作。

而IMU供電的部分,我是使用12V電源另外供應,直接以電腦輸入命令運作是正常的。

可能真的是IMU只讀取12V電位的問題了,因RS232轉TTL輸出部分最大只為10V,而從電腦端輸出的訊號為12V。

謝謝