JTool CMD/DLL
简介
- 提供命令行工具,方便使用脚本实现自动化任务
- 提供dll底层API,C语言编写,可供各种应用层语言调用(C# Python Matlab Qt等)
- 可使用ID号区分多个相同的设备
- 最快速的实现上层开发,仅需要几个api函数即可实现所需功能
简单示例
JTool CMD和DLL是用于USB转I2C、USB转IO等工具的命令行脚本工具和二次开发库
- CMD工具通常在生产测试环境中有很大作用,如在bat批处理脚本或Powershell脚本中实现自动化动作或检测
- DLL用于提供应用层调用的API,方便进行二次开发(C#、Python、QT、Matlab等)
CMD在Powershell中的应用示例
获取IO3的ADC采样值,判断是否在范围内
jtool adcon 3 0 #通道3作为ADC采样,不使用差分
$output = & "jtool" adcget 3 #获取通道3的采样值
$number = 0
# 尝试将输出转换为整数
if ([int]::TryParse($output, [ref] $number)) {
$number = [Math]::Round($number * 3.3 / 4096,2)
"转换成功,输出的数字为: $number"
$number = [Math]::Abs($number - 3.3)
"对比偏差值为: $number"
if($number -gt 0.3){ #判断偏差
Write-Error "对比失败,超出范围"
}
} else {
$output
Write-Error "转换失败,输出的不是有效的数"
}DLL在C#程序中的应用示例
读取I2C数据
//导入DLLAPI
[DllImport("jtool.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr DevOpen(DevType DevType, string Sn, int Id);
[DllImport("jtool.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern bool DevClose(IntPtr DevHandle);
[DllImport("jtool.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int I2CRead(IntPtr DevHandle, byte slave_addr, int reg_type, UInt32 reg_addr, UInt16 len, byte[] buf);
private void Read()
{
//打开设备,不指定SN和ID,只要有I2C设备就打开
IntPtr p = DevOpen(DevType.dev_i2c, null, -1);
if (p == IntPtr.Zero)
{
Console.WriteLine("打开设备失败");
return;
}
int readlen = 16;
byte[] buffread = new byte[readlen];
I2CRead(p, 0xA0, 1, 0x00, readlen, buffread);//读取从机地址A0,寄存器地址00,读16个字节到buffread
Console.WriteLine(BitConverter.ToString(buffread).Replace("-", " "));//打印读取的数据
DevClose(p);//关闭设备
}
在使用cmd或dll之前,建议先使用我们提供的上位机,先确保能正常使用
CMD命令集
命令行是在系统CMD程序中调用,如果直接双击打开jtool.exe,将不会运行
请在CMD中调用,如图所示,在jtool目录中启动CMD

打开命令行窗口后,调用jtool后面加上命令和参数

下面将详细讲解每一个命令的含义和参数
jtool [命令] [-选项1] [-选项2] [-选项n] [参数1] [参数2] [参数n]
help
查看所有命令集合
jtool --help查看单个命令含义和参数
jtool [命令] --helpscan
查看所有已插入的jtool设备.
jtool scandelay
延时一段时间(ms)
jtool delay 1000--------JIO--------
ioh
将IO口置高电平
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要置高电平的引脚号 |
#将IO1置高
jtool ioh 1
#将ID为0的设备IO1置高
jtool ioh -i 0 1
#将IO1~IO4全部置高
jtool ioh -m 0x0fiol
将IO口置低电平
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要置低电平的引脚号 |
#将IO1置低
jtool iol 1
#将ID为0的设备IO1置低
jtool iol -i 0 1
#将IO1~IO4全部置低
jtool iol -m 0x0fiow
将IO口写给定电平
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要写入电平的引脚号 |
| param1 | 需要写入的电平值 |
#将IO1写低
jtool iow 1 0
#将ID为0的设备IO1写高
jtool iow -i 0 1 1
#将IO1、IO2写高电平,IO3、IO4写低电平
jtool iow -m 0x0f 0x03ior
读IO口电平
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要读取电平的引脚号 |
#读取IO1的电平
jtool ior 1
#读取ID为0的设备IO1的电平
jtool ior -i 0 1
#同时读取IO1、IO3的电平
jtool ior -m 0x05pulseon
输出脉冲常开
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要脉冲输出的引脚号 |
| param1 | 脉冲输出的频率(可选值参考JIO上位机) |
#IO1输出脉冲常开 400Khz
jtool pulseon 1 400000
#ID为0的设备IO1输出脉冲常开 400Khz
jtool pulseon -i 0 1 400000
#4通道同时输出脉冲常开 400Khz
jtool pulseon -m 0x0f 400000pulseoff
关闭输出脉冲
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要关闭脉冲的引脚号 |
#IO1关闭脉冲
jtool pulseoff 1
#ID为0的设备IO1关闭脉冲
jtool pulseoff -i 0 1
#4通道同时关闭脉冲
jtool pulseoff -m 0x0fpulsecnt
输出固定脉冲数
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要脉冲输出的引脚号 |
| param1 | 脉冲输出的数量 |
| param2 | 脉冲输出的频率(可选值参考JIO上位机) |
#IO1输出1000个脉冲 100Khz
jtool pulsecnt 1 1000 100000
#ID为0的设备IO1输出1000个脉冲 100Khz
jtool pulsecnt -i 0 1 1000 100000
#4通道同时输出1000个脉冲 100Khz
jtool pulsecnt -m 0x0f 1000 100000pwmon
开启PWM输出
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要脉冲输出的引脚号 |
| param1 | PWM输出的占空比(0~1000对应占空比0%~100%) |
#IO1输出占空比50%的PWM
jtool pwmon 1 500
#ID为0的设备IO1输出占空比50%的PWM
jtool pwmon -i 0 1 500
#4通道同时输出占空比50%的PWM
jtool pwmon -m 0x0f 500pwmoff
关闭PWM输出
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要关闭PWM的引脚号 |
#IO1关闭PWM
jtool pwmoff 1
#ID为0的设备IO1关闭PWM
jtool pwmoff -i 0 1
#4通道同时关闭PWM
jtool pwmoff -m 0x0fpwmfreq
设置PWM频率(应用于所有PWM通道)
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | PWM输出的频率(可选值参考JIO上位机) |
#设置PWM频率为1Khz
jtool pwmfreq 1000
#ID为0的设备设置PWM频率为1Khz
jtool pwmfreq -i 0 1000capclear
清零PWM捕获的脉冲计数(仅支持通道1)
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | 需要清除计数的引脚号(此参数只能为1,仅通道1支持PWM捕获) |
#清空IO1的捕获脉冲计数
jtool capclear 1
#ID为0的设备清空IO1的捕获脉冲计数
jtool capclear -i 0 1capon
开启PWM捕获(仅支持通道1)
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | 需要开启PWM捕获的引脚号(此参数只能为1,仅通道1支持PWM捕获) |
#开启IO1的捕获功能
jtool capon 1
#ID为0的设备清空IO1的捕获脉冲计数
jtool capon -i 0 1capget
获取PWM捕获数据(仅支持通道1)
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | 需要获取捕获值的引脚号(此参数只能为1,仅通道1支持PWM捕获) |
#获取IO1的捕获数据
jtool capget 1
#ID为0的设备获取IO1的捕获数据
jtool capget -i 0 1adcsamp
设置ADC采样率(应用于所有ADC通道)
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | 配置ADC的采样率(可选值参考JIO上位机) |
#设置ADC频率为50hz
jtool adcsamp 50
#ID为0的设备设置ADC频率为50hz
jtool adcsamp -i 0 50adcon
开启ADC采样
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要开启ADC采样的引脚号 |
| param1 | 是否是差分采样(0单端 1差分)(设置为差分后将占用下一个引脚) |
#开启IO1的ADC采样
jtool adcon 1 0
#开启IO1的ADC采样(差分 IO1+ IO-)
jtool adcon 1 1
#ID为0的设备开启IO1的ADC采样
jtool adcon -i 0 1 0
#4通道同时开启ADC采样(两两差分)
jtool adcon -m 0x05 0x05adcget
获取ADC采样值
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | 是否以按位mask方式执行,用于同时执行多个引脚 |
| param0 | 需要获取ADC采样值的引脚号 |
#获取IO1的ADC采样值
jtool adcget 1
#ID为0的设备获取IO1的ADC采样值
jtool adcget -i 0 1
#获取IO1和IO3的ADC采样值
jtool adcget -m 0x05jiovcc
设置JIO设备的VCC输出电压
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | VCC选项枚举值,不同型号支持可能不同,具体参考JIO界面下拉框(例如:0 - 5v; 1 - 3.3v; 2 - 关闭) |
#VCC电压设置为5V
jtool jiovcc 0
#VCC电压设置为3.3V
jtool jiovcc 1
#VCC电压设置为关闭
jtool jiovcc 2jiovio
设置JIO设备的VIO电平电压
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | VIO选项枚举值,不同型号支持可能不同,具体参考JIO界面下拉框(例如:0 - 3.3v; 1 - 1.8v) |
#VIO电压设置为3.3V
jtool jiovio 0jioid
设置JIO设备的ID
此选项设置后重启生效
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | 需要修改的id值 |
#设置设备id值为1
jtool jioid 1
#将原来id为0的设备设置id值为1
jtool jioid -i 0 1jioreboot
重启JIO设备
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
jtool jiorebootjioinboot
JIO设备进入bootloader
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
jtool jioinboot--------JI2C--------
i2cscan
扫描I2C从机地址
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -s | slave7 使用7位地址模式(不包含读写位) |
#扫描I2C从机地址
jtool i2cscan
#使用id为0的设备扫描I2C从机地址
jtool i2cscan -i 0
#扫描I2C从机地址,以7位地址展示
jtool i2cscan -si2cwrite
I2C写数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -s | slave7 使用7位地址模式(不包含读写位) |
| param0 | 从机地址 |
| param1 | 寄存器地址(根据长短判断寄存器的类型,无需寄存器请填写none) |
| param2 | 需要写入的数据(数组) |
#从机地址a0 寄存器地址00 写入11 22 33 44 55
jtool i2cwrite A0 00 11 22 33 44 55
#从机地址a0 寄存器地址0000(代表寄存器地址是2字节的) 写入11 22 33 44 55
jtool i2cwrite A0 0000 11 22 33 44 55
#从机地址a0 寄存器地址000000(代表寄存器地址是3字节的) 写入11 22 33 44 55
jtool i2cwrite A0 000000 11 22 33 44 55i2cread
I2C读数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -s | slave7 使用7位地址模式(不包含读写位) |
| -d | d1 读延时 Sr前加延时(0~100ms) |
| -D | d2 读延时 读地址后加延时(0~100ms) |
| param0 | 从机地址 |
| param1 | 寄存器地址(根据长短判断寄存器的类型,无需寄存器请填写none) |
| param2 | 需要读取的长度(十进制) |
#从机地址a0 寄存器地址00 读取5字节
jtool i2cread A0 00 5
#从机地址a0 寄存器地址0000(代表寄存器地址是2字节的) 读取5字节
jtool i2cread A0 0000 5
#从机地址a0 寄存器地址000000(代表寄存器地址是3字节的) 读取5字节
jtool i2cread A0 000000 5eewrite
EEPROM写数据
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确
需确保pagesize正确(跨页写需要用到)
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -s | slave7 使用7位地址模式(不包含读写位) |
| -b | blockhigh Block在高位(适用于24AA(LC/FC)1025) |
| -p | (必选)EEPROM的页大小,用于跨页写处理(十进制,单位Byte) |
| param0 | 从机地址 |
| param1 | 寄存器地址(根据长短判断寄存器的类型,eeprom有些是1字节,有些是2字节) |
| param2 | 需要写入的数据(数组) |
#示例24C01 寄存器地址00 写入11 22 33 44 55
jtool eewrite -p 8 A0 00 11 22 33 44 55
#示例24C32 寄存器地址0000(此型号为2字节) 写入11 22 33 44 55
jtool eewrite -p 32 A0 0000 11 22 33 44 55eeread
EEPROM读数据
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -s | slave7 使用7位地址模式(不包含读写位) |
| -b | blockhigh Block在高位(适用于24AA(LC/FC)1025) |
| param0 | 从机地址 |
| param1 | 寄存器地址(根据长短判断寄存器的类型,eeprom有些是1字节,有些是2字节) |
| param2 | 需要读取的长度(十进制) |
#示例24C01 寄存器地址00 读取5字节
jtool eeread A0 00 5
#示例24C32 寄存器地址0000(此型号为2字节) 读取5字节
jtool eeread A0 0000 5eewritef
EEPROM写文件
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确
需确保pagesize正确(跨页写需要用到)
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -s | slave7 使用7位地址模式(不包含读写位) |
| -b | blockhigh Block在高位(适用于24AA(LC/FC)1025) |
| -p | (必选)EEPROM的页大小,用于跨页写处理(十进制,单位Byte) |
| param0 | 从机地址 |
| param1 | 寄存器地址(根据长短判断寄存器的类型,eeprom有些是1字节,有些是2字节) |
| param2 | 需要写入文件路径 |
#示例24C01 寄存器地址00 写入data.bin
jtool eewritef -p 8 A0 00 .\data.bin
#示例24C32 寄存器地址0000(此型号为2字节) 写入data.bin
jtool eewritef -p 32 A0 0000 .\data.bineereadf
EEPROM读数据到文件
EEPROM读数据
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -s | slave7 使用7位地址模式(不包含读写位) |
| -b | blockhigh Block在高位(适用于24AA(LC/FC)1025) |
| param0 | 从机地址 |
| param1 | 寄存器地址(根据长短判断寄存器的类型,eeprom有些是1字节,有些是2字节) |
| param2 | 需要读取的长度(十进制) |
| param3 | 需要保存到的文件夹路径(注意是文件夹不是文件) |
#示例24C01 寄存器地址00 读取5字节到当前目录
jtool eereadf A0 00 5 .\
#示例24C32 寄存器地址0000(此型号为2字节) 读取5字节到当前目录
jtool eereadf A0 0000 5 .\i2cint
检测中断引脚是否有中断
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -w | wait 是否等待出现中断后退出进程 |
| param0 | 中断类型(0:无 1:上升沿 2:下降沿 3:高电平 4:低电平 5:双边沿) |
#检测上升沿中断
jtool i2cint 1
#等待上升沿中断后退出
jtool i2cint -w 1ji2cvcc
设置JI2C设备的VCC输出电压
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | VCC选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 5v; 1 - "=VIO" ; 2 - 关闭) |
#VCC电压设置为5V
jtool ji2cvcc 0
#VCC电压设置为"=VIO"
jtool ji2cvcc 1
#VCC电压设置为关闭
jtool ji2cvcc 2ji2cvio
设置JI2C设备的VIO电平电压
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | VIO选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 3.3v; 1 - 1.8v) |
#VIO电压设置为3.3V
jtool ji2cvio 0ji2cspd
设置JI2C设备的时钟速率
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | I2C速率选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 10K; 1 - 50K) |
#I2C速率设置为100K
jtool ji2cspd 2ji2cid
设置JI2C设备的ID
此选项设置后重启生效
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | 需要修改的id值 |
#设置设备id值为1
jtool ji2cid 1
#将原来id为0的设备设置id值为1
jtool ji2cid -i 0 1ji2creboot
重启JI2C设备
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
jtool ji2crebootji2cinboot
JI2C设备进入bootloader
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
jtool ji2cinboot--------JSPI--------
spiwrite
SPI仅写数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | mode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG |
| -e | endian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB |
| param0 | 需要写入的数据(数组) |
#spi写入数组(默认时钟和位顺序)
jtool spiwrite 00 01 02 03 04 05
#spi写入数组(时钟HIGH_1EDG 位顺序LSB)
jtool spiwrite -m 2 -e 1 00 01 02 03 04 05spiread
SPI仅读数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | mode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG |
| -e | endian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB |
| param0 | 需要读取的长度 |
#spi读取5字节(默认时钟和位顺序)
jtool spiread 5
#spi读取5字节(时钟HIGH_1EDG 位顺序LSB)
jtool spiread -m 2 -e 1 5spiwr
SPI写同时读
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | mode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG |
| -e | endian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB |
| param0 | 需要写入的数据(数组) |
#spi写入数组(默认时钟和位顺序)
jtool spiwr 00 01 02 03 04 05
#spi写入数组(时钟HIGH_1EDG 位顺序LSB)
jtool spiwr -m 2 -e 1 00 01 02 03 04 05qspiwrite
QSPI仅写数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | mode 指定QSPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG |
| -e | endian 指定QSPI首位顺寻(默认为0): 0 - MSB; 1 - LSB |
| param0 | 需要写入的数据(数组) |
#spi写入数组(默认时钟和位顺序)
jtool qspiwrite 00 01 02 03 04 05
#spi写入数组(时钟HIGH_1EDG 位顺序LSB)
jtool qspiwrite -m 2 -e 1 00 01 02 03 04 05qspiread
QSPI仅读数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | mode 指定QSPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG |
| -e | endian 指定QSPI首位顺寻(默认为0): 0 - MSB; 1 - LSB |
| param0 | 需要读取的长度 |
#spi读取5字节(默认时钟和位顺序)
jtool qspiread 5
#spi读取5字节(时钟HIGH_1EDG 位顺序LSB)
jtool qspiread -m 2 -e 1 5spiwcmd
SPI带指令(CMD、ADDR、ALT、DUMMY)写数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | mode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG |
| -e | endian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB |
| -q | qspi 指定SPI/QSPI组合类型(默认为0): 0 - 全单线; 1 - 全四线; 2 - 仅数据四线; 3 - 仅指令单线 |
| -c | cmd 指令(十六进制)例如:00 代表1字节指令; 0000 代表2字节指令;最大4字节 |
| -a | addr 地址(十六进制)例如:00 代表1字节地址; 0000 代表2字节地址;最大4字节 |
| -t | alt(十六进制)例如:00 代表1字节alt; 0000 代表2字节alt;最大4字节 |
| -d | dummy dummy空周期长度(十进制)例如:1 代表1字节dummy; 2 代表2字节dummy;最大4字节 |
| param0 | 需要写入的数据(数组) |
#spi写入数组{0x55,0x55,0x55} cmd指令为0x01
jtool spiwcmd -c 01 55 55 55
#spi写入数组{0x55,0x55,0x55} cmd指令为0x01 指令阶段单线,数据阶段四线QSPI
jtool spiwcmd -q 2 -c 01 55 55 55spircmd
SPI带指令(CMD、ADDR、ALT、DUMMY)读数据
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -m | mode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG |
| -e | endian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB |
| -q | qspi 指定SPI/QSPI组合类型(默认为0): 0 - 全单线; 1 - 全四线; 2 - 仅数据四线; 3 - 仅指令单线 |
| -c | cmd 指令(十六进制)例如:00 代表1字节指令; 0000 代表2字节指令;最大4字节 |
| -a | addr 地址(十六进制)例如:00 代表1字节地址; 0000 代表2字节地址;最大4字节 |
| -t | alt(十六进制)例如:00 代表1字节alt; 0000 代表2字节alt;最大4字节 |
| -d | dummy dummy空周期长度(十进制)例如:1 代表1字节dummy; 2 代表2字节dummy;最大4字节 |
| param0 | 需要读取的长度 |
#spi 读取3字节 cmd指令为0x01
jtool spircmd -c 01 3
#spi读取3字节 cmd指令为0x01 指令阶段单线,数据阶段四线QSPI
jtool spircmd -q 2 -c 01 3spiint
检测中断引脚是否有中断
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| -w | wait 是否等待出现中断后退出进程 |
| param0 | 中断类型(0:无 1:上升沿 2:下降沿 3:高电平 4:低电平 5:双边沿) |
#检测上升沿中断
jtool spiint 1
#等待上升沿中断后退出
jtool spiint -w 1jspivcc
设置JSPI设备的VCC输出电压
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | VCC选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 5v; 1 - "=VIO" ; 2 - 关闭) |
#VCC电压设置为5V
jtool jspivcc 0
#VCC电压设置为"=VIO"
jtool jspivcc 1
#VCC电压设置为关闭
jtool jspivcc 2jspivio
设置JSPI设备的VIO电平电压
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | VIO选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 3.3v; 1 - 1.8v) |
#VIO电压设置为3.3V
jtool jspivio 0jspispd
设置JSPI设备的时钟速率
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | SPI速率选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 468.75K; 1 - 937.5K) |
#SPI速率设置为937.5K
jtool jspispd 21jspiid
设置JSPI设备的ID
此选项设置后重启生效
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
| param0 | 需要修改的id值 |
#设置设备id值为1
jtool jspiid 1
#将原来id为0的设备设置id值为1
jtool jspiid -i 0 1jspireboot
重启JSPI设备
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
jtool jspirebootjspiinboot
JSPI设备进入bootloader
| 选项/参数 | 说明 |
|---|---|
| -i | 使用指定id的设备 |
jtool jspiinbootDLL API
jtool.dll是由C语言编写的最底层动态链接库,以兼容所有其他应用层语言的调用
jtool.dll提供最简单易用的API,能最快速的实现需要的功能
将jtool.dll文件导入自己的工程即可,其中jtool.h文件中包含了所有API接口和枚举的声明

枚举类型
typedef enum
{
dev_all = -1,
dev_i2c = 0,
dev_io,
dev_spi,
dev_can,
dev_max,
}dev_type_enum;
typedef enum
{
ErrNone = 0,//成功
ErrParam = 1 << 0,//参数错误
ErrDisconnect = 1 << 1,//USB 断开
ErrBusy = 1 << 2,//USB发送忙
ErrWaiting = 1 << 3,//正在等待回复
ErrTimeOut = 1 << 4,//通信超时
ErrDataParse = 1 << 5,//通信数据错误
ErrFailACK = 1 << 6,//返回失败参数
} ErrorType;
typedef enum
{
REGADDR_NONE = 0,//不发送地址
REGADDR_8Bit = 1,//发送8位地址
REGADDR_16Bit = 2,//发送16位地址
REGADDR_24Bit = 3,//发送24位地址
REGADDR_32Bit = 4,//发送32位地址
}REGADDR_TYPE;
typedef enum
{
SINGLEALL = 0,//所有阶段都是单线
QUADALL = 1,//所有阶段都是四线
QUADDATA = 2,//仅数据阶段四线,其他单线
SINGLECMD = 3,//仅指令阶段单线,其他四线
}QSPI_TYPE;
typedef enum
{
LOW_1EDG = 0,
LOW_2EDG = 1,
HIGH_1EDG = 2,
HIGH_2EDG = 3,
} SPICK_TYPE;
typedef enum
{
ENDIAN_MSB = 0,//高位在前
ENDIAN_LSB = 1,//低位在前
} SPIFIRSTBIT_TYPE;
typedef enum
{
FIELD_NONE = 0,//无
FIELD_ONE,//1字节
FIELD_TWO,//2字节
FIELD_THREE,//3字节
FIELD_FOUR,//4字节
} FIELDLEN_TYPE;
typedef enum
{
INT_NONE = 0,//无
INT_RISE = 1,//上升沿
INT_FALL = 2,//下降沿
INT_HIGH = 3,//高电平
INT_LOW = 4,//低电平
INT_RISE_FALL = 5,//双边沿
}INT_TYPE;
//(JI2C、JSPI)INT引脚中断回调函数类型
typedef void (*I2CIntCallbackFun)(void);
typedef void (*SPIIntCallbackFun)(void);接口总览
公共API接口
在操作设备之前,需要先使用DevOpen打开设备
打开设备后,将占用此设备,别的进程无法再次打开被占用的设备,直到设备被DevClose关闭,或占用设备的进程退出
DevicesScan可扫描插入的设备,以字符串格式返回
| 接口名 | 概述 |
|---|---|
| DevicesScan | 查看当前接入的设备 |
| DevOpen | 打开设备 |
| DevClose | 关闭设备 |
JTool-IO API接口
JTool-IO模块大部分函数提供额外的_m结尾的API,含义是以按位mask的方式执行,方便同时执行多个引脚
例如:
0x0f 低4位为1,则同时设置IO1~IO4
0x03 低2位为1,则同时设置IO1和IO2
部分函数是应用于所有通道的,则不提供_m结尾的API
| 接口名 | 概述 |
|---|---|
| IOSetNone | 设置为空模式 |
| IOSetNone_m | 设置为空模式(mask多通道执行) |
| IOSetIn | 设置为IO输入 |
| IOSetIn_m | 设置为IO输入(mask多通道执行) |
| IOSetOut | 设置为IO输出 |
| IOSetOut_m | 设置为IO输出(mask多通道执行) |
| IOSetVal | 设置输出的电平 |
| IOSetVal_m | 设置输出的电平(mask多通道执行) |
| IOSetOutWithVal | 设置为IO输出,同时设置输出电平 |
| IOSetOutWithVal_m | 设置为IO输出,同时设置输出电平(mask多通道执行) |
| IOPulseOn | 脉冲输出常开 |
| IOPulseOn_m | 脉冲输出常开(mask多通道执行) |
| IOPulseOff | 脉冲输出停止 |
| IOPulseOff_m | 脉冲输出停止(mask多通道执行) |
| IOPulseCnt | 输出固定脉冲数 |
| IOPulseCnt_m | 输出固定脉冲数(mask多通道执行) |
| IOPulseFreq | 设置脉冲输出频率 |
| IOPulseFreq_m | 设置脉冲输出频率(mask多通道执行) |
| PWMSetFreq | 设置PWM输出频率 |
| PWMSetOut | 设置为PWM输出 |
| PWMSetOut_m | 设置为PWM输出(mask多通道执行) |
| PWMSetOn | 开启PWM输出 |
| PWMSetOn_m | 开启PWM输出(mask多通道执行) |
| PWMSetOff | 停止PWM输出 |
| PWMSetOff_m | 停止PWM输出(mask多通道执行) |
| PWMSetDuty | 设置PWM占空比 |
| PWMSetDuty_m | 设置PWM占空比(mask多通道执行) |
| CapSetIn | 设置为PWM捕获 |
| CapClearCnt | 清空捕获脉冲数计数 |
| ADCSetIn | 设置为ADC采集 |
| ADCSetIn_m | 设置为ADC采集(mask多通道执行) |
| ADCSetSamp | 设置ADC采样率 |
| IOGetInVal | 获取IO输入电平值 |
| IOGetInVal_m | 获取IO输入电平值(mask多通道执行) |
| IOGetPulseRemain | 获取脉冲输出剩余计数 |
| IOGetPulseRemain_m | 获取脉冲输出剩余计数(mask多通道执行) |
| CapGetVal | 获取PWM捕获值 |
| ADCGetVal | 获取ADC采样值 |
| ADCGetVal_m | 获取ADC采样值(mask多通道执行) |
| JIOReboot | 重启JIO设备 |
| JIOSetVcc | 设置JIO VCC输出电压 |
| JIOSetVio | 设置JIO VIO电平 |
| JIOSetID | 设置JIO设备的ID |
| JIOIntoBoot | 重启JIO,进入bootloader |
JTool-I2C API接口
| 接口名 | 概述 |
|---|---|
| I2CScan | 扫描I2C从机地址 |
| I2CWrite | I2C写数据 |
| I2CRead | I2C读数据 |
| I2CReadWithDelay | I2C读数据(带延时) |
| EEWrite | EEPROM写数据 |
| EERead | EEPROM读数据 |
| I2CRegisterIntCallback | 注册中断回调函数 |
| I2CCloseIntCallback | 关闭中断回调函数 |
| JI2CReboot | 重启JI2C设备 |
| JI2CSetVcc | 设置JI2C VCC输出电压 |
| JI2CSetVio | 设置JI2C VIO电平 |
| JI2CSetSpeed | 设置JI2C通信速率 |
| JI2CSetID | 设置JI2C设备的ID |
| JI2CIntoBoot | 重启JI2C,进入bootloader |
JTool-SPI API接口
| 接口名 | 概述 |
|---|---|
| SPIWriteOnly | SPI仅写数据 |
| SPIReadOnly | SPI仅读数据 |
| SPIWriteRead | SPI写同时读数据 |
| QSPIWriteOnly | QSPI仅写数据 |
| QSPIReadOnly | QSPI仅读数据 |
| SPIWriteWithCMD | SPI带指令(CMD、ADDR、ALT、DUMMY)写数据 |
| SPIReadWithCMD | SPI带指令(CMD、ADDR、ALT、DUMMY)读数据 |
| SPIRegisterIntCallback | 注册中断回调函数 |
| SPICloseIntCallback | 关闭中断回调函数 |
| JSPIReboot | 重启JSPI设备 |
| JSPISetVcc | 设置JSPI VCC输出电压 |
| JSPISetVio | 设置JSPI VIO电平 |
| JSPISetSpeed | 设置JSPI通信速率 |
| JSPISetID | 设置JSPI设备的ID |
| JSPIIntoBoot | 重启JSPI,进入bootloader |
--------公共接口--------
DevicesScan
查看当前接入的设备
语法
char* DevicesScan(
int DevType,
int* OutCnt
);参数 [in] DevType 设备类型,参考dev_type_enum枚举值 [out] OutCnt 返回扫描到的设备数量
返回值
扫描到的设备,以字符串表示,如果扫描到多个设备,以\r\n分割
DevOpen
打开设备
语法
void* DevOpen(
int DevType,
char* Sn,
int Id
);参数 [in] DevType 设备类型,参考dev_type_enum枚举值 [in] Sn 指定要打开的设备SN,字符串类型,如不指定,请使用NULL [in] Id 指定要打开的设备ID,取值范围(0~65535),如不指定,请使用-1
返回值
如果打开成功,返回设备句柄(即设备指针),后续的操作需要用到此句柄
如果打开失败,返回NULL
DevClose
关闭设备
语法
BOOL DevClose(
void* DevHandle
);参数 [in] DevHandle 需要关闭的设备句柄(即设备指针)
返回值
如果关闭成功,返回TRUE
如果关闭失败,返回FALSE
--------JIO接口--------
IOSetNone
单个引脚设置为空模式
语法
ErrorType IOSetNone(
void* DevHandle,
uint32_t ionum
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetNone_m
多个引脚设置为空模式(mask多通道执行)
语法
ErrorType IOSetNone_m(
void* DevHandle,
uint32_t iomask
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetIn
单个引脚设置为IO输入
语法
ErrorType IOSetIn(
void* DevHandle,
uint32_t ionum,
BOOL pullup,
BOOL pulldown
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] pullup 是否上拉 [in] pulldown 是否下拉
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetIn_m
多个引脚设置为IO输入(mask多通道执行)
语法
ErrorType IOSetIn_m(
void* DevHandle,
uint32_t iomask,
uint32_t pullups,
uint32_t pulldowns
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] pullups 是否上拉(按位使能) [in] pulldowns 是否下拉(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetOut
单个引脚设置为IO输出
语法
ErrorType IOSetOut(
void* DevHandle,
uint32_t ionum,
BOOL pp
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] pp 是否推挽输出
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetOut_m
多个引脚设置为IO输出(mask多通道执行)
语法
ErrorType IOSetOut_m(
void* DevHandle,
uint32_t iomask,
uint32_t pps
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] pps 是否推挽输出(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetVal
单个引脚设置输出的电平
语法
ErrorType IOSetVal(
void* DevHandle,
uint32_t ionum,
BOOL val
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] val 是否输出高电平
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetVal_m
多个引脚设置输出的电平(mask多通道执行)
语法
ErrorType IOSetVal_m(
void* DevHandle,
uint32_t iomask,
uint32_t vals
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] vals 是否输出高电平(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetOutWithVal
单个引脚设置为IO输出,同时设置输出电平
语法
ErrorType IOSetOutWithVal(
void* DevHandle,
uint32_t ionum,
BOOL pp,
BOOL val
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] pp 是否推挽输出 [in] val 是否输出高电平
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOSetOutWithVal_m
多个引脚设置为IO输出,同时设置输出电平(mask多通道执行)
语法
ErrorType IOSetOutWithVal_m(
void* DevHandle,
uint32_t iomask,
uint32_t pps,
uint32_t vals
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] pps 是否推挽输出(按位使能) [in] vals 是否输出高电平(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseOn
单个引脚脉冲输出常开(脉冲输出需先使用IOSetOut或IOSetOut_m将引脚置为输出)
语法
ErrorType IOPulseOn(
void* DevHandle,
uint32_t ionum,
uint32_t freq
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] freq 脉冲频率(可选值参考JIO下拉框)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseOn_m
多个引脚脉冲输出常开(mask多通道执行)(脉冲输出需先使用IOSetOut或IOSetOut_m将引脚置为输出)
语法
ErrorType IOPulseOn_m(
void* DevHandle,
uint32_t iomask,
uint32_t* freqs
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] freqs 脉冲频率数组(请传入32通道的uint32_t类型的数组,并在对应位置填入需要的值)(可选值参考JIO下拉框)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseOff
单个引脚脉冲输出停止
语法
ErrorType IOPulseOff(
void* DevHandle,
uint32_t ionum
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseOff_m
多个引脚脉冲输出停止(mask多通道执行)
语法
ErrorType IOPulseOff_m(
void* DevHandle,
uint32_t iomask
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseCnt
单个引脚输出固定脉冲数(脉冲输出需先使用IOSetOut或IOSetOut_m将引脚置为输出)
语法
ErrorType IOPulseCnt(
void* DevHandle,
uint32_t ionum,
uint32_t cnt,
uint32_t freq
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] cnt 脉冲数量 [in] freq 脉冲频率(可选值参考JIO下拉框)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseCnt_m
多个引脚输出固定脉冲数(mask多通道执行)(脉冲输出需先使用IOSetOut或IOSetOut_m将引脚置为输出)
语法
ErrorType IOPulseCnt_m(
void* DevHandle,
uint32_t iomask,
uint32_t* cnts,
uint32_t* freqs
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] cnts 脉冲数量数组(请传入32通道的uint32_t类型的数组,并在对应位置填入需要的值) [in] freqs 脉冲频率数组(请传入32通道的uint32_t类型的数组,并在对应位置填入需要的值)(可选值参考JIO下拉框)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseFreq
单个引脚设置脉冲输出频率
语法
ErrorType IOPulseFreq(
void* DevHandle,
uint32_t ionum,
uint32_t freq
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] freq 脉冲频率(可选值参考JIO下拉框)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOPulseFreq_m
多个引脚设置脉冲输出频率(mask多通道执行)
语法
ErrorType IOPulseFreq_m(
void* DevHandle,
uint32_t iomask,
uint32_t* freqs
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] freqs 脉冲频率数组(请传入32通道的uint32_t类型的数组,并在对应位置填入需要的值)(可选值参考JIO下拉框)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetFreq
设置PWM输出频率(应用于所有PWM通道)
语法
ErrorType PWMSetFreq(
void* DevHandle,
uint32_t freq
);参数 [in] DevHandle 设备句柄 [in] freq PWM频率(可选值参考JIO下拉框)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetOut
单个引脚设置为PWM输出
语法
ErrorType PWMSetOut(
void* DevHandle,
uint32_t ionum
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetOut_m
多个引脚设置为PWM输出(mask多通道执行)
语法
ErrorType PWMSetOut_m(
void* DevHandle,
uint32_t iomask
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetOn
单个引脚开启PWM输出
语法
ErrorType PWMSetOn(
void* DevHandle,
uint32_t ionum
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetOn_m
多个引脚开启PWM输出(mask多通道执行)
语法
ErrorType PWMSetOn_m(
void* DevHandle,
uint32_t iomask
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetOff
单个引脚停止PWM输出
语法
ErrorType PWMSetOff(
void* DevHandle,
uint32_t ionum
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetOff_m
多个引脚停止PWM输出(mask多通道执行)
语法
ErrorType PWMSetOff_m(
void* DevHandle,
uint32_t iomask
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetDuty
单个引脚设置PWM占空比
语法
ErrorType PWMSetDuty(
void* DevHandle,
uint32_t ionum,
uint16_t duty
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] duty PWM占空比(0~1000对应占空比0%~100%)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
PWMSetDuty_m
多个引脚设置PWM占空比(mask多通道执行)
语法
ErrorType PWMSetDuty_m(
void* DevHandle,
uint32_t iomask,
uint16_t* dutys
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] dutys PWM占空比数组(请传入32通道的uint16_t类型的数组,并在对应位置填入需要的值)(0~1000对应占空比0%~100%)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
CapSetIn
设置为PWM捕获(仅通道1支持)
语法
ErrorType CapSetIn(
void* DevHandle,
uint32_t ionum
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
CapClearCnt
清空捕获脉冲数计数(仅通道1支持)
语法
ErrorType CapClearCnt(
void* DevHandle,
uint32_t ionum
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
ADCSetIn
单个引脚设置为ADC采集
语法
ErrorType ADCSetIn(
void* DevHandle,
uint32_t ionum,
BOOL isdiff
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [in] isdiff 是否是差分(1,3通道支持差分)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
ADCSetIn_m
多个引脚设置为ADC采集(mask多通道执行)
语法
ErrorType ADCSetIn_m(
void* DevHandle,
uint32_t iomask,
uint32_t isdiffs
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [in] isdiffs 是否是差分(按位使能)(1,3通道支持差分)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
ADCSetSamp
设置ADC采样率(应用于所有ADC通道)
语法
ErrorType ADCSetSamp(
void* DevHandle,
uint32_t samp
);参数 [in] DevHandle 设备句柄 [in] samp ADC采样率
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOGetInVal
单个引脚获取IO输入电平值
语法
ErrorType IOGetInVal(
void* DevHandle,
uint32_t ionum,
BOOL* val
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [out] val 返回的电平值,0代表低电平,1代表高电平
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOGetInVal_m
多个引脚获取IO输入电平值(mask多通道执行)
语法
ErrorType IOGetInVal_m(
void* DevHandle,
uint32_t iomask,
uint32_t* vals
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [out] vals 返回的电平值,(请传入单个uint32_t类型的指针)(按位判断高低电平)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOGetPulseRemain
单个引脚获取脉冲输出剩余计数
语法
ErrorType IOGetPulseRemain(
void* DevHandle,
uint32_t ionum,
uint32_t* remaincnt
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [out] remaincnt 返回单个通道的剩余脉冲数(请传入单个uint32_t类型的指针)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
IOGetPulseRemain_m
多个引脚获取脉冲输出剩余计数(mask多通道执行)
语法
ErrorType IOGetPulseRemain_m(
void* DevHandle,
uint32_t iomask,
uint32_t* remaincnts
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [out] remaincnts 返回多个通道的剩余脉冲数,(请传入32通道的uint32_t类型的数组,将返回对应通道的剩余脉冲数)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
CapGetVal
获取PWM捕获值(仅通道1支持)
语法
ErrorType CapGetVal(
void* DevHandle,
uint32_t ionum,
uint32_t* freq,
uint16_t* duty,
uint32_t* pulsecnt
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [out] freq 返回捕获的频率(请传入单个uint32_t类型的指针) [out] duty 返回捕获的占空比(请传入单个uint16_t类型的指针) [out] pulsecnt 返回捕获的脉冲数量(请传入单个uint32_t类型的指针)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
ADCGetVal
单个引脚获取ADC采样值
语法
ErrorType ADCGetVal(
void* DevHandle,
uint32_t ionum,
uint16_t* adval
);参数 [in] DevHandle 设备句柄 [in] ionum 单个引脚序号(从1开始) [out] adval 返回单个通道ADC采样值(请传入单个uint16_t类型的指针)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
ADCGetVal_m
多个引脚获取ADC采样值(mask多通道执行)
语法
ErrorType ADCGetVal_m(
void* DevHandle,
uint32_t iomask,
uint16_t* advals
);参数 [in] DevHandle 设备句柄 [in] iomask 多个引脚位号(按位使能) [out] advals 返回多个通道ADC采样值(请传入32通道的uint16_t类型的数组,将返回对应通道的ADC采样值)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JIOReboot
重启JIO设备
语法
ErrorType JIOReboot(
void* DevHandle
);参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JIOSetVcc
设置JIOVCC输出电压
语法
ErrorType JIOSetVcc(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val VCC选项枚举值,不同型号支持可能不同,具体参考JIO界面下拉框(例如:0 - 5v; 1 - 3.3v; 2 - 关闭)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JIOSetVio
设置JIOVIO电平
语法
ErrorType JIOSetVio(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val VIO选项枚举值,不同型号支持可能不同,具体参考JIO界面下拉框(例如:0 - 3.3v; 1 - 1.8v)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JIOSetID
设置JIO设备的ID
语法
ErrorType JIOSetID(
void* DevHandle,
uint16_t val
);参数 [in] DevHandle 设备句柄 [in] val ID值(0~65535)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JIOIntoBoot
重启JIO,进入bootloader
语法
ErrorType JIOIntoBoot(
void* DevHandle
);参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
--------JI2C接口--------
I2CScan
扫描I2C从机地址
语法
ErrorType I2CScan(
void* DevHandle,
uint8_t* cnt,
uint8_t* result
);参数 [in] DevHandle 设备句柄 [out] cnt 返回扫描到的从机地址数量 [out] result 返回扫描到的从机地址(务必传入128个uint8_t类型的数组,扫描到的地址将保存在此数组)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
I2CWrite
I2C写数据
语法
ErrorType I2CWrite(
void* DevHandle,
uint8_t slave_addr,
REGADDR_TYPE reg_type,
uint32_t reg_addr,
uint16_t len,
uint8_t* data
);参数 [in] DevHandle 设备句柄 [in] slave_addr 从机地址(8位模式) [in] reg_type 寄存器地址类型,参考REGADDR_TYPE枚举值 [in] reg_addr 寄存器地址 [in] len 写入长度 [in] data 写入的数据数组
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
I2CRead
I2C读数据
语法
ErrorType I2CRead(
void* DevHandle,
uint8_t slave_addr,
REGADDR_TYPE reg_type,
uint32_t reg_addr,
uint16_t len,
uint8_t* buf
);参数 [in] DevHandle 设备句柄 [in] slave_addr 从机地址(8位模式) [in] reg_type 寄存器地址类型,参考REGADDR_TYPE枚举值 [in] reg_addr 寄存器地址 [in] len 读取长度 [out] buf 读取数据存入的数组(请确数组保长度至少==len)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
I2CReadWithDelay
I2C读数据(带延时)
语法
ErrorType I2CReadWithDelay(
void* DevHandle,
uint8_t slave_addr,
REGADDR_TYPE reg_type,
uint32_t reg_addr,
uint16_t len,
uint8_t* buf,
uint8_t sr_delay,
uint8_t raddr_delay
);参数 [in] DevHandle 设备句柄 [in] slave_addr 从机地址(8位模式) [in] reg_type 寄存器地址类型,参考REGADDR_TYPE枚举值 [in] reg_addr 寄存器地址 [in] len 读取长度 [out] buf 读取数据存入的数组(请确数组保长度至少==len) [in] sr_delay 读取加延时等待(Sr重复起始条件之前) [in] raddr_delay 读取加延时等待(发送完读地址后)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
EEWrite
EEPROM写数据
语法
ErrorType EEWrite(
void* DevHandle,
uint8_t base_slave_addr,
REGADDR_TYPE reg_type,
uint16_t page_size,
uint32_t reg_addr,
uint32_t len,
uint8_t* data
);参数 [in] DevHandle 设备句柄 [in] base_slave_addr base从机地址(多block的EEPROM具有多个从机地址,请使用第一个)(8位模式) [in] reg_type 寄存器地址类型,参考REGADDR_TYPE枚举值(EEPROM只能8位或16位,参考具体型号) [in] page_size EEPROM的页大小(确保此参数正确,用于跨页处理) [in] reg_addr 寄存器地址 [in] len 写入长度 [in] data 写入的数据数组
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
EERead
EEPROM读数据
语法
ErrorType EERead(
void* DevHandle,
uint8_t base_slave_addr,
REGADDR_TYPE reg_type,
uint32_t reg_addr,
uint32_t len,
uint8_t* buf
);参数 [in] DevHandle 设备句柄 [in] base_slave_addr base从机地址(多block的EEPROM具有多个从机地址,请使用第一个)(8位模式) [in] reg_type 寄存器地址类型,参考REGADDR_TYPE枚举值(EEPROM只能8位或16位,参考具体型号) [in] reg_addr 寄存器地址 [in] len 读取长度 [out] buf 读取数据存入的数组(请确数组保长度至少==len)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
I2CRegisterIntCallback
注册I2C INT引脚的中断回调函数
语法
ErrorType I2CRegisterIntCallback(
void* DevHandle,
INT_TYPE inttype,
I2CIntCallbackFun callback)参数 [in] DevHandle 设备句柄 [in] inttype 中断触发类型,参考INT_TYPE枚举值 [in] callback 中断回调函数指针,自定义中断函数(参数和返回值均为void),将函数名带入此参数,中断触发时将执行此函数
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
I2CCloseIntCallback
关闭I2C INT引脚的中断回调函数
语法
ErrorType I2CCloseIntCallback(void* DevHandle)参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JI2CReboot
重启JI2C设备
语法
ErrorType JI2CReboot(
void* DevHandle
);参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JI2CSetVcc
设置JI2CVCC输出电压
语法
ErrorType JI2CSetVcc(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val VCC选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 5v; 1 - "=VIO" ; 2 - 关闭)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JI2CSetVio
设置JI2CVIO电平
语法
ErrorType JI2CSetVio(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val VIO选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 3.3v; 1 - 1.8v)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JI2CSetSpeed
设置JI2C通信速率
语法
ErrorType JI2CSetSpeed(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val I2C速率选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 10K; 1 - 50K)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JI2CSetID
设置JI2C设备的ID
语法
ErrorType JI2CSetID(
void* DevHandle,
uint16_t val
);参数 [in] DevHandle 设备句柄 [in] val ID值(0~65535)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JI2CIntoBoot
重启JI2C,进入bootloader
语法
ErrorType JI2CIntoBoot(
void* DevHandle
);参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
--------JSPI接口--------
SPIWriteOnly
SPI仅写数据
语法
ErrorType SPIWriteOnly(
void* DevHandle,
SPICK_TYPE ck,
SPIFIRSTBIT_TYPE firstbit,
uint32_t len,
uint8_t* dataw)参数 [in] DevHandle 设备句柄 [in] ck 时钟类型,参考SPICK_TYPE枚举值 [in] firstbit 位顺序(MSB,LSB),参考SPIFIRSTBIT_TYPE枚举值 [in] len 写入长度 [in] dataw 写入的数据数组
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
SPIReadOnly
SPI仅读数据
语法
ErrorType SPIReadOnly(
void* DevHandle,
SPICK_TYPE ck,
SPIFIRSTBIT_TYPE firstbit,
uint32_t len,
uint8_t* bufr)参数 [in] DevHandle 设备句柄 [in] ck 时钟类型,参考SPICK_TYPE枚举值 [in] firstbit 位顺序(MSB,LSB),参考SPIFIRSTBIT_TYPE枚举值 [in] len 读取长度 [out] bufr 读取数据存入的数组(请确数组保长度至少==len)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
SPIWriteRead
SPI写同时读数据
语法
ErrorType SPIWriteRead(
void* DevHandle,
SPICK_TYPE ck,
SPIFIRSTBIT_TYPE firstbit,
uint32_t len,
uint8_t* dataw,
uint8_t* bufr)参数 [in] DevHandle 设备句柄 [in] ck 时钟类型,参考SPICK_TYPE枚举值 [in] firstbit 位顺序(MSB,LSB),参考SPIFIRSTBIT_TYPE枚举值 [in] len 读写长度 [in] dataw 写入的数据数组 [out] bufr 读取数据存入的数组(请确数组保长度至少==len)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
QSPIWriteOnly
QSPI仅写数据
语法
ErrorType QSPIWriteOnly(
void* DevHandle,
SPICK_TYPE ck,
SPIFIRSTBIT_TYPE firstbit,
uint32_t len,
uint8_t* dataw)参数 [in] DevHandle 设备句柄 [in] ck 时钟类型,参考SPICK_TYPE枚举值 [in] firstbit 位顺序(MSB,LSB),参考SPIFIRSTBIT_TYPE枚举值 [in] len 写入长度 [in] dataw 写入的数据数组
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
QSPIReadOnly
QSPI仅读数据
语法
ErrorType QSPIReadOnly(
void* DevHandle,
SPICK_TYPE ck,
SPIFIRSTBIT_TYPE firstbit,
uint32_t len,
uint8_t* bufr)参数 [in] DevHandle 设备句柄 [in] ck 时钟类型,参考SPICK_TYPE枚举值 [in] firstbit 位顺序(MSB,LSB),参考SPIFIRSTBIT_TYPE枚举值 [in] len 读取长度 [out] bufr 读取数据存入的数组(请确数组保长度至少==len)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
SPIWriteWithCMD
SPI带指令(CMD、ADDR、ALT、DUMMY)写数据
语法
ErrorType SPIWriteWithCMD(
void* DevHandle,
SPICK_TYPE ck,
SPIFIRSTBIT_TYPE firstbit,
QSPI_TYPE qspitype,
FIELDLEN_TYPE cmdtype,
uint32_t cmd,
FIELDLEN_TYPE addrtype,
uint32_t addr,
FIELDLEN_TYPE alttype,
uint32_t alt,
FIELDLEN_TYPE dummytype,
uint32_t len,
uint8_t* dataw)参数 [in] DevHandle 设备句柄 [in] ck 时钟类型,参考SPICK_TYPE枚举值 [in] firstbit 位顺序(MSB,LSB),参考SPIFIRSTBIT_TYPE枚举值 [in] qspitype spi/qspi组合类型,参考QSPI_TYPE枚举值 [in] cmdtype cmd字节数,参考FIELDLEN_TYPE枚举值 [in] cmd cmd [in] addrtype addr字节数,参考FIELDLEN_TYPE枚举值 [in] addr addr [in] alttype alt字节数,参考FIELDLEN_TYPE枚举值 [in] alt alt [in] dummytype dummy字节数,参考FIELDLEN_TYPE枚举值 [in] len 写入长度 [in] dataw 写入的数据数组
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
SPIReadWithCMD
SPI带指令(CMD、ADDR、ALT、DUMMY)读数据
语法
ErrorType SPIReadWithCMD(
void* DevHandle,
SPICK_TYPE ck,
SPIFIRSTBIT_TYPE firstbit,
QSPI_TYPE qspitype,
FIELDLEN_TYPE cmdtype,
uint32_t cmd,
FIELDLEN_TYPE addrtype,
uint32_t addr,
FIELDLEN_TYPE alttype,
uint32_t alt,
FIELDLEN_TYPE dummytype,
uint32_t len,
uint8_t* bufr)参数 [in] DevHandle 设备句柄 [in] ck 时钟类型,参考SPICK_TYPE枚举值 [in] firstbit 位顺序(MSB,LSB),参考SPIFIRSTBIT_TYPE枚举值 [in] qspitype spi/qspi组合类型,参考QSPI_TYPE枚举值 [in] cmdtype cmd字节数,参考FIELDLEN_TYPE枚举值 [in] cmd cmd [in] addrtype addr字节数,参考FIELDLEN_TYPE枚举值 [in] addr addr [in] alttype alt字节数,参考FIELDLEN_TYPE枚举值 [in] alt alt [in] dummytype dummy字节数,参考FIELDLEN_TYPE枚举值 [in] len 读取长度 [out] bufr 读取数据存入的数组(请确数组保长度至少==len)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
SPIRegisterIntCallback
注册SPI INT引脚的中断回调函数
语法
ErrorType SPIRegisterIntCallback(
void* DevHandle,
INT_TYPE inttype,
SPIIntCallbackFun callback)参数 [in] DevHandle 设备句柄 [in] inttype 中断触发类型,参考INT_TYPE枚举值 [in] callback 中断回调函数指针,自定义中断函数(参数和返回值均为void),将函数名带入此参数,中断触发时将执行此函数
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
SPICloseIntCallback
关闭SPI INT引脚的中断回调函数
语法
ErrorType SPICloseIntCallback(void* DevHandle)参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JSPIReboot
重启JSPI设备
语法
ErrorType JSPIReboot(
void* DevHandle
);参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JSPISetVcc
设置JSPIVCC输出电压
语法
ErrorType JSPISetVcc(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val VCC选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 5v; 1 - "=VIO" ; 2 - 关闭)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JSPISetVio
设置JSPIVIO电平
语法
ErrorType JSPISetVio(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val VIO选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 3.3v; 1 - 1.8v)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JSPISetSpeed
设置JSPI通信速率
语法
ErrorType JSPISetSpeed(
void* DevHandle,
uint8_t val
);参数 [in] DevHandle 设备句柄 [in] val I2C速率选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 468.75K; 1 - 937.5K)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JSPISetID
设置JSPI设备的ID
语法
ErrorType JSPISetID(
void* DevHandle,
uint16_t val
);参数 [in] DevHandle 设备句柄 [in] val ID值(0~65535)
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值
JSPIIntoBoot
重启JSPI,进入bootloader
语法
ErrorType JSPIIntoBoot(
void* DevHandle
);参数 [in] DevHandle 设备句柄
返回值
如果操作成功,返回ErrNone
如果操作失败,返回错误代码参考ErrorType枚举值