{"id":13826670,"url":"https://github.com/lynxis/lpc_sniffer","last_synced_at":"2026-02-06T02:14:56.280Z","repository":{"id":137511123,"uuid":"48382001","full_name":"lynxis/lpc_sniffer","owner":"lynxis","description":"a low pin count sniffer for icestick","archived":false,"fork":false,"pushed_at":"2019-03-14T20:02:56.000Z","size":87,"stargazers_count":88,"open_issues_count":2,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-04T09:05:42.087Z","etag":null,"topics":["ice40","icestick","lowpincount","lpc"],"latest_commit_sha":null,"homepage":null,"language":"Verilog","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lynxis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-12-21T16:25:21.000Z","updated_at":"2024-08-01T13:41:15.000Z","dependencies_parsed_at":"2024-01-07T22:49:52.526Z","dependency_job_id":"3c73370a-d739-4467-a1ce-847d2f002560","html_url":"https://github.com/lynxis/lpc_sniffer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxis%2Flpc_sniffer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxis%2Flpc_sniffer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxis%2Flpc_sniffer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxis%2Flpc_sniffer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lynxis","download_url":"https://codeload.github.com/lynxis/lpc_sniffer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225476383,"owners_count":17480215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ice40","icestick","lowpincount","lpc"],"created_at":"2024-08-04T09:01:42.307Z","updated_at":"2026-02-06T02:14:56.112Z","avatar_url":"https://github.com/lynxis.png","language":"Verilog","funding_links":[],"categories":["\u003ca id=\"7bf0f5839fb2827fdc1b93ae6ac7f53d\"\u003e\u003c/a\u003e工具","Verilog"],"sub_categories":["\u003ca id=\"32739127f0c38d61b14448c66a797098\"\u003e\u003c/a\u003e嗅探\u0026\u0026Sniff"],"readme":"# lpc sniffer (low pin count) for ice40 stick\n\nTurn the ice40 stick into a LPC sniffer.\n\n# features\n\n- i/o read + writes\n- memory read + writes\n- sync errors\n\n# How to use\n\n1. modify EEPROM of the FTDI and enable OPTO mode on Channel B\n1. programm top.bin into your ice40 by `iceprog lpc_sniffer.bin`\n1. connect the LPC bus\n1. python3 `./parse/read_serial.py /dev/ttyUSB1`\n\n# what connectors are used on the IceStick?\n\n- J1 connector\n```\n\tVCC 3.3|NC 1\n\tGND        2\n\tlpc_clock  3\n\tlpc_ad[0]  4\n\tlpc_ad[1]  5\n\tlpc_ad[2]  6\n\tlpc_ad[3]  7\n\tlpc_frame  8\n\tlpc_reset  9\n```\n- uart output over the ftdi\n\n## LEDs\n\n```\n\tFor orientation: the usb port points south:\n\tgreen in the middle: overflow_led\n```\n\noverflow\\_led when internal buffer is full. No more LPC frames are decoded\n\n# Uart protocol\n\nThe LPC sniffer will write out frames onto the **second** uart of FTDI with 921600 baud.\n\n## format\n\n- 4 byte: address\n- 1 byte: data\n- 1 byte: 0-3bits: direction+type, 4-7: errorcode\n- 2 byte: '\\r\\n'\n\n## error codes\n\nAn error code is decoded in 4 bits\n- 0001 - sync timeout.\n\n# Internal documentation\n\nA LPC frame will:\n\n1. decoded by the LPC decoder\n2. saved into the internal memory\n3. padded by \\r\\n\n4. written onto uart\n\n## in memory layout\n\nThe internal memory is used as 48bit addressable memory.\n48 bit is exact one lpc frame\n\n- 4 byte: address\n- 1 byte: data\n- 1 byte: direction/type + error code\n\n## internal buffer\n\nThe LPC sniffer is using an internal buffer. When the internal buffer\nis full, new frames will be discarded. The green LED in the middle will turn on.\nThe internal buffer can save up to 2\\*\\*10 lpc frames (1024).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flynxis%2Flpc_sniffer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flynxis%2Flpc_sniffer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flynxis%2Flpc_sniffer/lists"}