项目简介
ArduJtag库是一个基于Arduino和JTAG开发的库,可实现从Arduino对JTAG引脚的控制,提供简单的API用于数据的发送和接收,支持JTAG序列和操作,且通信速度可配置。
项目的主要特性和功能
- JTAG引脚控制:能够直接从Arduino控制JTAG引脚(TCK、TMS、TDI、TDO)。
- 简单API:提供用于发送和接收数据的简单API。
- JTAG序列支持:支持JTAG序列和操作。
- 可配置的通信速度:支持对通信速度进行配置。
安装使用步骤
1. 安装库
- Arduino IDE:将此库复制到Arduino/Libraries目录中,或使用Arduino IDE内置的库管理器安装。
- PlatformIO:使用PlatformIO库管理器安装,或通过PlatformIO Core CLI安装,或将其添加到
platformio.ini
文件中:ini [env] lib_deps = ArduJtag [env] lib_deps =
2. 在代码中包含库
在Arduino草图中包含库: ```c
include "Jtag.hpp"
```
3. 使用示例
以下是通过JTAG接口与STM32F407微控制器交互的示例,该微控制器包含两个串联的TAP模块:BoundaryScan和Debug。
写入IR寄存器
使用以下函数将指令写入IR
寄存器:
c
void ir(uint16_t instruction, uint16_t length);
例如,设置BoundaryScan TAP的BYPASS
指令和Debug TAP的IDCODE
指令:
c
uint16_t instruction = 0x1FE;
uint16_t length = 9;
ir(instruction, length);
写入DR寄存器
使用以下函数将数据写入DR
寄存器:
c
void dr(uint8_t *input, uint32_t length, uint8_t *output);
例如,发送以下位序列到DR
寄存器:
c
uint8_t input[] = {0x02, 0x00, 0x40, 0x01};
uint8_t output[] = {0x00, 0x00, 0x00, 0x00};
uint32_t length = 27;
dr(input, length, output);
形成任意位序列
使用以下函数形成任意JTAG数据包:
c
JTAG::ERROR sequence(size_t n, const uint8_t tms[], const uint8_t tdi[], uint8_t *tdo);
更多示例可以在examples目录中找到。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】