Norimasa Okamoto
/
LPC1114_USBProtocolAnalyzer
USB protocol analyzer
control:
interrupt in:
main.cpp@0:0faa55631ffe, 2014-06-18 (annotated)
- Committer:
- va009039
- Date:
- Wed Jun 18 01:33:32 2014 +0000
- Revision:
- 0:0faa55631ffe
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 0:0faa55631ffe | 1 | #include "mbed.h" |
va009039 | 0:0faa55631ffe | 2 | #include "BaseUsbProtocolAnalyzer.h" |
va009039 | 0:0faa55631ffe | 3 | // |
va009039 | 0:0faa55631ffe | 4 | // USB LPC1114FN28 |
va009039 | 0:0faa55631ffe | 5 | // 1 VCC |
va009039 | 0:0faa55631ffe | 6 | // 2 DATA- dp18(P1_9) |
va009039 | 0:0faa55631ffe | 7 | // 3 DATA+ dp17(P1_8) |
va009039 | 0:0faa55631ffe | 8 | // 4 GND GND |
va009039 | 0:0faa55631ffe | 9 | |
va009039 | 0:0faa55631ffe | 10 | DigitalOut led1(LED1),led2(LED2); |
va009039 | 0:0faa55631ffe | 11 | DigitalIn usb_dm(P1_9); |
va009039 | 0:0faa55631ffe | 12 | DigitalIn usb_dp(P1_8); |
va009039 | 0:0faa55631ffe | 13 | RawSerial pc(USBTX, USBRX); |
va009039 | 0:0faa55631ffe | 14 | |
va009039 | 0:0faa55631ffe | 15 | const int BUF_SIZE = 512; |
va009039 | 0:0faa55631ffe | 16 | uint8_t buf[BUF_SIZE+256]; |
va009039 | 0:0faa55631ffe | 17 | |
va009039 | 0:0faa55631ffe | 18 | class USB_Protocol_Analyzer : public BaseUsbProtocolAnalyzer { |
va009039 | 0:0faa55631ffe | 19 | virtual void output(char c) { |
va009039 | 0:0faa55631ffe | 20 | pc.putc(c); |
va009039 | 0:0faa55631ffe | 21 | } |
va009039 | 0:0faa55631ffe | 22 | }; |
va009039 | 0:0faa55631ffe | 23 | |
va009039 | 0:0faa55631ffe | 24 | USB_Protocol_Analyzer analyzer; |
va009039 | 0:0faa55631ffe | 25 | |
va009039 | 0:0faa55631ffe | 26 | extern "C" { |
va009039 | 0:0faa55631ffe | 27 | uint8_t* usbcapture_lpc1114(uint8_t* buf, uint8_t* end); |
va009039 | 0:0faa55631ffe | 28 | } |
va009039 | 0:0faa55631ffe | 29 | |
va009039 | 0:0faa55631ffe | 30 | void usbcapture_setup() |
va009039 | 0:0faa55631ffe | 31 | { |
va009039 | 0:0faa55631ffe | 32 | usb_dm.mode(PullNone); |
va009039 | 0:0faa55631ffe | 33 | usb_dp.mode(PullNone); |
va009039 | 0:0faa55631ffe | 34 | |
va009039 | 0:0faa55631ffe | 35 | LPC_SYSCON->SYSAHBCLKCTRL |= 1<<8; // CT16B1 |
va009039 | 0:0faa55631ffe | 36 | LPC_IOCON->PIO1_8 = (LPC_IOCON->PIO1_8 & ~0x7) | 0x1; // FUNC=CT16B1_CAP0 |
va009039 | 0:0faa55631ffe | 37 | LPC_TMR16B1->TCR |= 1; // Counter Enable |
va009039 | 0:0faa55631ffe | 38 | LPC_TMR16B1->CCR |= 7; // CAP0RE,CAP0FE,CAP0I |
va009039 | 0:0faa55631ffe | 39 | } |
va009039 | 0:0faa55631ffe | 40 | |
va009039 | 0:0faa55631ffe | 41 | int main() { |
va009039 | 0:0faa55631ffe | 42 | pc.baud(115200); |
va009039 | 0:0faa55631ffe | 43 | pc.puts(__FILE__); |
va009039 | 0:0faa55631ffe | 44 | pc.puts("\n"); |
va009039 | 0:0faa55631ffe | 45 | |
va009039 | 0:0faa55631ffe | 46 | usbcapture_setup(); |
va009039 | 0:0faa55631ffe | 47 | |
va009039 | 0:0faa55631ffe | 48 | for(int n = 0; ; n++) { |
va009039 | 0:0faa55631ffe | 49 | uint8_t* end = usbcapture_lpc1114(buf, buf+BUF_SIZE); |
va009039 | 0:0faa55631ffe | 50 | analyzer.init(); |
va009039 | 0:0faa55631ffe | 51 | for(uint8_t* p = buf; p < end; p++) { |
va009039 | 0:0faa55631ffe | 52 | analyzer.input(*p); |
va009039 | 0:0faa55631ffe | 53 | if (*p == 0) { |
va009039 | 0:0faa55631ffe | 54 | pc.puts("\n"); |
va009039 | 0:0faa55631ffe | 55 | } |
va009039 | 0:0faa55631ffe | 56 | } |
va009039 | 0:0faa55631ffe | 57 | pc.puts("\n\n"); |
va009039 | 0:0faa55631ffe | 58 | Timer t; |
va009039 | 0:0faa55631ffe | 59 | t.reset(); |
va009039 | 0:0faa55631ffe | 60 | t.start(); |
va009039 | 0:0faa55631ffe | 61 | while(t.read_ms() < 1000*3 + n%100) { |
va009039 | 0:0faa55631ffe | 62 | } |
va009039 | 0:0faa55631ffe | 63 | led1 = !led1; |
va009039 | 0:0faa55631ffe | 64 | } |
va009039 | 0:0faa55631ffe | 65 | } |
va009039 | 0:0faa55631ffe | 66 |