JTool CMD/DLL

简介

简单示例

JTool CMD和DLL是用于USB转I2C、USB转IO等工具的命令行脚本工具和二次开发库

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 [命令] --help

scan

查看所有已插入的jtool设备.

jtool scan

delay

延时一段时间(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 0x0f

iol

将IO口置低电平

选项/参数说明
-i使用指定id的设备
-m是否以按位mask方式执行,用于同时执行多个引脚
param0需要置低电平的引脚号
#将IO1置低
jtool iol 1

#将ID为0的设备IO1置低
jtool iol -i 0 1

#将IO1~IO4全部置低
jtool iol -m 0x0f

iow

将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 0x03

ior

读IO口电平

选项/参数说明
-i使用指定id的设备
-m是否以按位mask方式执行,用于同时执行多个引脚
param0需要读取电平的引脚号
#读取IO1的电平
jtool ior 1

#读取ID为0的设备IO1的电平
jtool ior -i 0 1

#同时读取IO1、IO3的电平
jtool ior -m 0x05

pulseon

输出脉冲常开

选项/参数说明
-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 400000

pulseoff

关闭输出脉冲

选项/参数说明
-i使用指定id的设备
-m是否以按位mask方式执行,用于同时执行多个引脚
param0需要关闭脉冲的引脚号
#IO1关闭脉冲
jtool pulseoff 1

#ID为0的设备IO1关闭脉冲
jtool pulseoff -i 0 1

#4通道同时关闭脉冲
jtool pulseoff -m 0x0f

pulsecnt

输出固定脉冲数

选项/参数说明
-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 100000

pwmon

开启PWM输出

选项/参数说明
-i使用指定id的设备
-m是否以按位mask方式执行,用于同时执行多个引脚
param0需要脉冲输出的引脚号
param1PWM输出的占空比(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 500

pwmoff

关闭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 0x0f

pwmfreq

设置PWM频率(应用于所有PWM通道)

选项/参数说明
-i使用指定id的设备
param0PWM输出的频率(可选值参考JIO上位机)
#设置PWM频率为1Khz
jtool pwmfreq 1000

#ID为0的设备设置PWM频率为1Khz
jtool pwmfreq -i 0 1000

capclear

清零PWM捕获的脉冲计数(仅支持通道1)

选项/参数说明
-i使用指定id的设备
param0需要清除计数的引脚号(此参数只能为1,仅通道1支持PWM捕获)
#清空IO1的捕获脉冲计数
jtool capclear 1

#ID为0的设备清空IO1的捕获脉冲计数
jtool capclear -i 0 1

capon

开启PWM捕获(仅支持通道1)

选项/参数说明
-i使用指定id的设备
param0需要开启PWM捕获的引脚号(此参数只能为1,仅通道1支持PWM捕获)
#开启IO1的捕获功能
jtool capon 1

#ID为0的设备清空IO1的捕获脉冲计数
jtool capon -i 0 1

capget

获取PWM捕获数据(仅支持通道1)

选项/参数说明
-i使用指定id的设备
param0需要获取捕获值的引脚号(此参数只能为1,仅通道1支持PWM捕获)
#获取IO1的捕获数据
jtool capget 1

#ID为0的设备获取IO1的捕获数据
jtool capget -i 0 1

adcsamp

设置ADC采样率(应用于所有ADC通道)

选项/参数说明
-i使用指定id的设备
param0配置ADC的采样率(可选值参考JIO上位机)
#设置ADC频率为50hz
jtool adcsamp 50

#ID为0的设备设置ADC频率为50hz
jtool adcsamp -i 0 50

adcon

开启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 0x05

adcget

获取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 0x05

jiovcc

设置JIO设备的VCC输出电压

选项/参数说明
-i使用指定id的设备
param0VCC选项枚举值,不同型号支持可能不同,具体参考JIO界面下拉框(例如:0 - 5v; 1 - 3.3v; 2 - 关闭)
#VCC电压设置为5V
jtool jiovcc 0

#VCC电压设置为3.3V
jtool jiovcc 1

#VCC电压设置为关闭
jtool jiovcc 2

jiovio

设置JIO设备的VIO电平电压

选项/参数说明
-i使用指定id的设备
param0VIO选项枚举值,不同型号支持可能不同,具体参考JIO界面下拉框(例如:0 - 3.3v; 1 - 1.8v)
#VIO电压设置为3.3V
jtool jiovio 0

jioid

设置JIO设备的ID
此选项设置后重启生效

选项/参数说明
-i使用指定id的设备
param0需要修改的id值
#设置设备id值为1
jtool jioid 1

#将原来id为0的设备设置id值为1
jtool jioid -i 0 1

jioreboot

重启JIO设备

选项/参数说明
-i使用指定id的设备
jtool jioreboot

jioinboot

JIO设备进入bootloader

选项/参数说明
-i使用指定id的设备
jtool jioinboot

--------JI2C--------

i2cscan

扫描I2C从机地址

选项/参数说明
-i使用指定id的设备
-sslave7 使用7位地址模式(不包含读写位)
#扫描I2C从机地址
jtool i2cscan

#使用id为0的设备扫描I2C从机地址
jtool i2cscan -i 0

#扫描I2C从机地址,以7位地址展示
jtool i2cscan -s

i2cwrite

I2C写数据

选项/参数说明
-i使用指定id的设备
-sslave7 使用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 55

i2cread

I2C读数据

选项/参数说明
-i使用指定id的设备
-sslave7 使用7位地址模式(不包含读写位)
-dd1 读延时 Sr前加延时(0~100ms)
-Dd2 读延时 读地址后加延时(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 5

eewrite

EEPROM写数据
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确
需确保pagesize正确(跨页写需要用到)

选项/参数说明
-i使用指定id的设备
-sslave7 使用7位地址模式(不包含读写位)
-bblockhigh 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 55

eeread

EEPROM读数据
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确

选项/参数说明
-i使用指定id的设备
-sslave7 使用7位地址模式(不包含读写位)
-bblockhigh 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 5

eewritef

EEPROM写文件
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确
需确保pagesize正确(跨页写需要用到)

选项/参数说明
-i使用指定id的设备
-sslave7 使用7位地址模式(不包含读写位)
-bblockhigh 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.bin

eereadf

EEPROM读数据到文件
EEPROM读数据
EEPROM的读写操作内部已经进行了跨页和跨block处理,调用时无需顾虑,可从任意地址读写任意长度的数据
需确保baseslave正确
需确保regaddr的长度正确

选项/参数说明
-i使用指定id的设备
-sslave7 使用7位地址模式(不包含读写位)
-bblockhigh 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的设备
-wwait 是否等待出现中断后退出进程
param0中断类型(0:无 1:上升沿 2:下降沿 3:高电平 4:低电平 5:双边沿)
#检测上升沿中断
jtool i2cint 1

#等待上升沿中断后退出
jtool i2cint -w 1

ji2cvcc

设置JI2C设备的VCC输出电压

选项/参数说明
-i使用指定id的设备
param0VCC选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 5v; 1 - "=VIO" ; 2 - 关闭)
#VCC电压设置为5V
jtool ji2cvcc 0

#VCC电压设置为"=VIO"
jtool ji2cvcc 1

#VCC电压设置为关闭
jtool ji2cvcc 2

ji2cvio

设置JI2C设备的VIO电平电压

选项/参数说明
-i使用指定id的设备
param0VIO选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 3.3v; 1 - 1.8v)
#VIO电压设置为3.3V
jtool ji2cvio 0

ji2cspd

设置JI2C设备的时钟速率

选项/参数说明
-i使用指定id的设备
param0I2C速率选项枚举值,不同型号支持可能不同,具体参考JI2C界面下拉框(例如:0 - 10K; 1 - 50K)
#I2C速率设置为100K
jtool ji2cspd 2

ji2cid

设置JI2C设备的ID
此选项设置后重启生效

选项/参数说明
-i使用指定id的设备
param0需要修改的id值
#设置设备id值为1
jtool ji2cid 1

#将原来id为0的设备设置id值为1
jtool ji2cid -i 0 1

ji2creboot

重启JI2C设备

选项/参数说明
-i使用指定id的设备
jtool ji2creboot

ji2cinboot

JI2C设备进入bootloader

选项/参数说明
-i使用指定id的设备
jtool ji2cinboot

--------JSPI--------

spiwrite

SPI仅写数据

选项/参数说明
-i使用指定id的设备
-mmode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG
-eendian 指定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 05

spiread

SPI仅读数据

选项/参数说明
-i使用指定id的设备
-mmode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG
-eendian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB
param0需要读取的长度
#spi读取5字节(默认时钟和位顺序)
jtool spiread 5

#spi读取5字节(时钟HIGH_1EDG 位顺序LSB)
jtool spiread -m 2 -e 1 5

spiwr

SPI写同时读

选项/参数说明
-i使用指定id的设备
-mmode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG
-eendian 指定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 05

qspiwrite

QSPI仅写数据

选项/参数说明
-i使用指定id的设备
-mmode 指定QSPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG
-eendian 指定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 05

qspiread

QSPI仅读数据

选项/参数说明
-i使用指定id的设备
-mmode 指定QSPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG
-eendian 指定QSPI首位顺寻(默认为0): 0 - MSB; 1 - LSB
param0需要读取的长度
#spi读取5字节(默认时钟和位顺序)
jtool qspiread 5

#spi读取5字节(时钟HIGH_1EDG 位顺序LSB)
jtool qspiread -m 2 -e 1 5

spiwcmd

SPI带指令(CMD、ADDR、ALT、DUMMY)写数据

选项/参数说明
-i使用指定id的设备
-mmode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG
-eendian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB
-qqspi 指定SPI/QSPI组合类型(默认为0): 0 - 全单线; 1 - 全四线; 2 - 仅数据四线; 3 - 仅指令单线
-ccmd 指令(十六进制)例如:00 代表1字节指令; 0000 代表2字节指令;最大4字节
-aaddr 地址(十六进制)例如:00 代表1字节地址; 0000 代表2字节地址;最大4字节
-talt(十六进制)例如:00 代表1字节alt; 0000 代表2字节alt;最大4字节
-ddummy 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 55

spircmd

SPI带指令(CMD、ADDR、ALT、DUMMY)读数据

选项/参数说明
-i使用指定id的设备
-mmode 指定SPI时钟模式(默认为0): 0 - LOW_1EDG; 1 - LOW_2EDG; 2 - HIGH_1EDG; 3 - HIGH_2EDG
-eendian 指定SPI首位顺寻(默认为0): 0 - MSB; 1 - LSB
-qqspi 指定SPI/QSPI组合类型(默认为0): 0 - 全单线; 1 - 全四线; 2 - 仅数据四线; 3 - 仅指令单线
-ccmd 指令(十六进制)例如:00 代表1字节指令; 0000 代表2字节指令;最大4字节
-aaddr 地址(十六进制)例如:00 代表1字节地址; 0000 代表2字节地址;最大4字节
-talt(十六进制)例如:00 代表1字节alt; 0000 代表2字节alt;最大4字节
-ddummy 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 3

spiint

检测中断引脚是否有中断

选项/参数说明
-i使用指定id的设备
-wwait 是否等待出现中断后退出进程
param0中断类型(0:无 1:上升沿 2:下降沿 3:高电平 4:低电平 5:双边沿)
#检测上升沿中断
jtool spiint 1

#等待上升沿中断后退出
jtool spiint -w 1

jspivcc

设置JSPI设备的VCC输出电压

选项/参数说明
-i使用指定id的设备
param0VCC选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 5v; 1 - "=VIO" ; 2 - 关闭)
#VCC电压设置为5V
jtool jspivcc 0

#VCC电压设置为"=VIO"
jtool jspivcc 1

#VCC电压设置为关闭
jtool jspivcc 2

jspivio

设置JSPI设备的VIO电平电压

选项/参数说明
-i使用指定id的设备
param0VIO选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 3.3v; 1 - 1.8v)
#VIO电压设置为3.3V
jtool jspivio 0

jspispd

设置JSPI设备的时钟速率

选项/参数说明
-i使用指定id的设备
param0SPI速率选项枚举值,不同型号支持可能不同,具体参考JSPI界面下拉框(例如:0 - 468.75K; 1 - 937.5K)
#SPI速率设置为937.5K
jtool jspispd 21

jspiid

设置JSPI设备的ID
此选项设置后重启生效

选项/参数说明
-i使用指定id的设备
param0需要修改的id值
#设置设备id值为1
jtool jspiid 1

#将原来id为0的设备设置id值为1
jtool jspiid -i 0 1

jspireboot

重启JSPI设备

选项/参数说明
-i使用指定id的设备
jtool jspireboot

jspiinboot

JSPI设备进入bootloader

选项/参数说明
-i使用指定id的设备
jtool jspiinboot

DLL 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从机地址
I2CWriteI2C写数据
I2CReadI2C读数据
I2CReadWithDelayI2C读数据(带延时)
EEWriteEEPROM写数据
EEReadEEPROM读数据
I2CRegisterIntCallback注册中断回调函数
I2CCloseIntCallback关闭中断回调函数
JI2CReboot重启JI2C设备
JI2CSetVcc设置JI2C VCC输出电压
JI2CSetVio设置JI2C VIO电平
JI2CSetSpeed设置JI2C通信速率
JI2CSetID设置JI2C设备的ID
JI2CIntoBoot重启JI2C,进入bootloader

JTool-SPI API接口

接口名概述
SPIWriteOnlySPI仅写数据
SPIReadOnlySPI仅读数据
SPIWriteReadSPI写同时读数据
QSPIWriteOnlyQSPI仅写数据
QSPIReadOnlyQSPI仅读数据
SPIWriteWithCMDSPI带指令(CMD、ADDR、ALT、DUMMY)写数据
SPIReadWithCMDSPI带指令(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枚举值