1.文档新增无依赖使用说明。
This commit is contained in:
@@ -84,6 +84,20 @@ int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_ADC_GET_CHANNEL, &number);
|
||||
```
|
||||
|
||||
不依赖ADC接口:
|
||||
|
||||
```c
|
||||
/* 定义通道编号 */
|
||||
#define CHANNEL_NUMBER 5
|
||||
|
||||
/* 设置通道编号 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, CHANNEL_NUMBER));
|
||||
|
||||
/* 获取通道编号 */
|
||||
int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, &number);
|
||||
```
|
||||
|
||||
### 设置/获取通道配置
|
||||
|
||||
通道配置:
|
||||
@@ -100,6 +114,17 @@ int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_ADC_GET_CHANNEL_CONFIG, &state);
|
||||
```
|
||||
|
||||
不依赖ADC接口:
|
||||
|
||||
```c
|
||||
/* 设置通道配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, MR_ENABLE));
|
||||
|
||||
/* 获取通道配置 */
|
||||
int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &state);
|
||||
```
|
||||
|
||||
## 读取ADC设备通道值
|
||||
|
||||
```c
|
||||
|
||||
@@ -87,6 +87,20 @@ int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_ADC_GET_CHANNEL, &number);
|
||||
```
|
||||
|
||||
Independent of ADC interface:
|
||||
|
||||
```c
|
||||
/* Define channel number */
|
||||
#define CHANNEL_NUMBER 5
|
||||
|
||||
/* Set channel number */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, CHANNEL_NUMBER));
|
||||
|
||||
/* Get channel number */
|
||||
int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, &number);
|
||||
```
|
||||
|
||||
### Set/Get Channel Configure
|
||||
|
||||
Channel configure:
|
||||
@@ -103,6 +117,17 @@ int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_ADC_GET_CHANNEL_CONFIG, &state);
|
||||
```
|
||||
|
||||
Independent of ADC interface:
|
||||
|
||||
```c
|
||||
/* Set channel configure */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, MR_ENABLE));
|
||||
|
||||
/* Get channel configure */
|
||||
int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &state);
|
||||
```
|
||||
|
||||
## Read ADC Device Channel Value
|
||||
|
||||
```c
|
||||
|
||||
@@ -84,6 +84,20 @@ int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_DAC_GET_CHANNEL, &number);
|
||||
```
|
||||
|
||||
不依赖DAC接口:
|
||||
|
||||
```c
|
||||
/* 定义通道编号 */
|
||||
#define CHANNEL_NUMBER 5
|
||||
|
||||
/* 设置通道编号 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, CHANNEL_NUMBER));
|
||||
|
||||
/* 获取通道编号 */
|
||||
int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, &number);
|
||||
```
|
||||
|
||||
### 设置/获取通道配置
|
||||
|
||||
通道配置:
|
||||
@@ -100,6 +114,17 @@ int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_DAC_GET_CHANNEL_CONFIG, &state);
|
||||
```
|
||||
|
||||
不依赖DAC接口:
|
||||
|
||||
```c
|
||||
/* 设置通道配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, MR_ENABLE));
|
||||
|
||||
/* 获取通道配置 */
|
||||
int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &state);
|
||||
```
|
||||
|
||||
## 写入DAC设备通道值
|
||||
|
||||
```c
|
||||
|
||||
@@ -87,6 +87,20 @@ int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_DAC_GET_CHANNEL, &number);
|
||||
```
|
||||
|
||||
Independent of DAC interface:
|
||||
|
||||
```c
|
||||
/* Define channel number */
|
||||
#define CHANNEL_NUMBER 5
|
||||
|
||||
/* Set channel number */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, CHANNEL_NUMBER));
|
||||
|
||||
/* Get channel number */
|
||||
int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, &number);
|
||||
```
|
||||
|
||||
### Set/Get Channel Configure
|
||||
|
||||
Channel configure:
|
||||
@@ -103,6 +117,17 @@ int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_DAC_GET_CHANNEL_CONFIG, &state);
|
||||
```
|
||||
|
||||
Independent of DAC interface:
|
||||
|
||||
```c
|
||||
/* Set channel status */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, MR_ENABLE));
|
||||
|
||||
/* Get channel status */
|
||||
int state;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &state);
|
||||
```
|
||||
|
||||
## Write DAC Device Channel Value
|
||||
|
||||
```c
|
||||
|
||||
@@ -120,6 +120,18 @@ mr_dev_ioctl(ds, MR_CTL_I2C_SET_CONFIG, &config);
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
不依赖I2C接口:
|
||||
|
||||
```c
|
||||
/* 设置默认配置 */
|
||||
int config[] = {100000, 0, 8};
|
||||
|
||||
/* 设置I2C设备配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, &config);
|
||||
/* 获取I2C设备配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
注:
|
||||
|
||||
- 如未手动配置,默认配置为:
|
||||
@@ -141,6 +153,17 @@ uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_REG, ®);
|
||||
```
|
||||
|
||||
不依赖I2C接口:
|
||||
|
||||
```c
|
||||
/* 设置寄存器值 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, 0x12));
|
||||
|
||||
/* 获取寄存器值 */
|
||||
uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, ®);
|
||||
```
|
||||
|
||||
注:
|
||||
|
||||
- 寄存器值仅在主机模式下生效。
|
||||
@@ -158,6 +181,17 @@ mr_dev_ioctl(ds, MR_CTL_I2C_SET_RD_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
不依赖I2C接口:
|
||||
|
||||
```c
|
||||
size_t size = 256;
|
||||
|
||||
/* 设置读缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_BUFSZ, &size);
|
||||
/* 获取读缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
注:如未手动配置,将使用 `Kconfig`中配置的大小(默认为32Byte)。只有在从机模式下才使用读缓冲区。
|
||||
|
||||
### 清空读缓冲区
|
||||
@@ -166,6 +200,12 @@ mr_dev_ioctl(ds, MR_CTL_I2C_GET_RD_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
不依赖I2C接口:
|
||||
|
||||
```c
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
### 获取读缓冲区数据大小
|
||||
|
||||
```c
|
||||
@@ -175,6 +215,15 @@ size_t size = 0;
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
不依赖I2C接口:
|
||||
|
||||
```c
|
||||
size_t size = 0;
|
||||
|
||||
/* 获取读缓冲区数据大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
### 设置/获取读回调函数
|
||||
|
||||
```c
|
||||
@@ -196,6 +245,27 @@ mr_dev_ioctl(ds, MR_CTL_I2C_SET_RD_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
不依赖I2C接口:
|
||||
|
||||
```c
|
||||
/* 定义回调函数 */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* 获取缓冲区数据大小 */
|
||||
ssize_t data_size = *(ssize_t *)args;
|
||||
|
||||
/* 处理中断 */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* 设置读回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
/* 获取读回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
## 读取I2C设备数据
|
||||
|
||||
```c
|
||||
|
||||
@@ -124,6 +124,18 @@ mr_dev_ioctl(ds, MR_CTL_I2C_SET_CONFIG, &config);
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
Independent of I2C interface:
|
||||
|
||||
```c
|
||||
/* Set default configuration */
|
||||
int config[] = {100000, 0, 8};
|
||||
|
||||
/* Set I2C device configuration */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, &config);
|
||||
/* Get I2C device configuration */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
Note:
|
||||
|
||||
- If not manually configured, the default configuration is:
|
||||
@@ -147,6 +159,17 @@ uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_REG, ®);
|
||||
```
|
||||
|
||||
Independent of I2C interface:
|
||||
|
||||
```c
|
||||
/* Set register value */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, 0x12));
|
||||
|
||||
/* Get register value */
|
||||
uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, ®);
|
||||
```
|
||||
|
||||
Note:
|
||||
|
||||
- The register value only takes effect in master mode.
|
||||
@@ -164,6 +187,17 @@ mr_dev_ioctl(ds, MR_CTL_I2C_SET_RD_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
Independent of I2C interface:
|
||||
|
||||
```c
|
||||
size_t size = 256;
|
||||
|
||||
/* Set read buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_BUFSZ, &size);
|
||||
/* Get read buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
Note: If not manually configured, it will use the size configured in `Kconfig` (default 32Byte). The read buffer is only
|
||||
used in slave mode.
|
||||
|
||||
@@ -173,6 +207,12 @@ used in slave mode.
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
Independent of I2C interface:
|
||||
|
||||
```c
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
### Get Read Buffer Data Size
|
||||
|
||||
```c
|
||||
@@ -182,6 +222,15 @@ size_t size = 0;
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
Independent of I2C interface:
|
||||
|
||||
```c
|
||||
size_t size = 0;
|
||||
|
||||
/* Get read buffer data size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
### Set/Get Read Callback Function
|
||||
|
||||
```c
|
||||
@@ -203,6 +252,27 @@ mr_dev_ioctl(ds, MR_CTL_I2C_SET_RD_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_I2C_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
Independent of I2C interface:
|
||||
|
||||
```c
|
||||
/* Define callback function */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* Get buffer data size */
|
||||
ssize_t data_size = *(ssize_t *)args;
|
||||
|
||||
/* Handle interrupt */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* Set read callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
/* Get read callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
## Read I2C Device Data
|
||||
|
||||
```c
|
||||
|
||||
@@ -96,6 +96,20 @@ int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_PIN_GET_NUMBER, &number);
|
||||
```
|
||||
|
||||
不依赖PIN接口:
|
||||
|
||||
```c
|
||||
/* 定义引脚编号 */
|
||||
#define PIN_NUMBER 45
|
||||
|
||||
/* 设置引脚编号 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, PIN_NUMBER));
|
||||
|
||||
/* 获取引脚编号 */
|
||||
int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, &number);
|
||||
```
|
||||
|
||||
### 设置引脚模式
|
||||
|
||||
#### 引脚模式
|
||||
@@ -125,6 +139,16 @@ mr_dev_ioctl(ds, MR_CTL_PIN_GET_NUMBER, &number);
|
||||
mr_dev_ioctl(ds, MR_CTL_PIN_SET_MODE, MR_MAKE_LOCAL(int, PIN_MODE));
|
||||
```
|
||||
|
||||
不依赖PIN接口:
|
||||
|
||||
```c
|
||||
/* 定义引脚模式 */
|
||||
#define PIN_MODE 1
|
||||
|
||||
/* 设置引脚模式 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, PIN_MODE));
|
||||
```
|
||||
|
||||
### 设置/获取外部中断回调函数
|
||||
|
||||
```c
|
||||
@@ -148,6 +172,29 @@ int (*callback)(int desc, void *args);
|
||||
mr_dev_ioctl(ds, MR_CTL_PIN_GET_EXTI_CALL, &callback);
|
||||
```
|
||||
|
||||
不依赖PIN接口:
|
||||
|
||||
```c
|
||||
#define PIN_NUMBER 45
|
||||
/* 定义外部中断回调函数 */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* 获取引脚编号 */
|
||||
ssize_t number = *(ssize_t *)args;
|
||||
|
||||
/* 处理外部中断事件 */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
|
||||
/* 设置外部中断回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, call);
|
||||
|
||||
/* 获取外部中断回调函数 */
|
||||
int (*callback)(int desc, void *args);
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
注:
|
||||
|
||||
- 设置外部中断模式前需要先配置回调函数,否则将成为无回调中断。
|
||||
|
||||
@@ -100,6 +100,20 @@ int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_PIN_GET_NUMBER, &number);
|
||||
```
|
||||
|
||||
Independent of PIN interface:
|
||||
|
||||
```c
|
||||
/* Define pin number */
|
||||
#define PIN_NUMBER 45
|
||||
|
||||
/* Set pin number */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, PIN_NUMBER));
|
||||
|
||||
/* Get pin number */
|
||||
int number;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, &number);
|
||||
```
|
||||
|
||||
### Set Pin Mode
|
||||
|
||||
#### Pin Mode
|
||||
@@ -129,6 +143,16 @@ And 5 external interrupt modes:
|
||||
mr_dev_ioctl(ds, MR_CTL_PIN_SET_MODE, MR_MAKE_LOCAL(int, PIN_MODE));
|
||||
```
|
||||
|
||||
Independent of PIN interface:
|
||||
|
||||
```c
|
||||
/* Define pin mode */
|
||||
#define PIN_MODE 1
|
||||
|
||||
/* Set pin mode */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, PIN_MODE));
|
||||
```
|
||||
|
||||
### Set/Get External Interrupt Callback Function
|
||||
|
||||
```c
|
||||
@@ -152,6 +176,29 @@ int (*callback)(int desc, void *args);
|
||||
mr_dev_ioctl(ds, MR_CTL_PIN_GET_EXTI_CALL, &callback);
|
||||
```
|
||||
|
||||
Independent of PIN interface:
|
||||
|
||||
```c
|
||||
#define PIN_NUMBER 45
|
||||
/* Define external interrupt callback function */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* Get pin number */
|
||||
ssize_t number = *(ssize_t *)args;
|
||||
|
||||
/* Handle external interrupt event */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
|
||||
/* Set external interrupt callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, call);
|
||||
|
||||
/* Get external interrupt callback function */
|
||||
int (*callback)(int desc, void *args);
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
Note:
|
||||
|
||||
- Before setting the external interrupt mode, you need to configure the callback function, otherwise, it becomes a
|
||||
|
||||
@@ -101,6 +101,18 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_SET_CONFIG, &config);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
不依赖SERIAL接口:
|
||||
|
||||
```c
|
||||
/* 设置默认配置 */
|
||||
int config[] = {115200, 8, 1, 0, 0, 0};
|
||||
|
||||
/* 设置SERIAL设备配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, &config);
|
||||
/* 获取SERIAL设备配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
注:如未手动配置,默认配置为:
|
||||
|
||||
- 波特率:`115200`
|
||||
@@ -126,6 +138,22 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_SET_WR_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_WR_BUFSZ, &size);
|
||||
```
|
||||
|
||||
不依赖SERIAL接口:
|
||||
|
||||
```c
|
||||
size_t size = 256;
|
||||
|
||||
/* 设置读缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_BUFSZ, &size);
|
||||
/* 获取读缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_BUFSZ, &size);
|
||||
|
||||
/* 设置写缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_WR_BUFSZ, &size);
|
||||
/* 获取写缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_WR_BUFSZ, &size);
|
||||
```
|
||||
|
||||
注:如未手动配置,将使用 `Kconfig`中配置的大小(默认为32Byte)。
|
||||
|
||||
### 清空读/写缓冲区
|
||||
@@ -135,6 +163,13 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_CLR_RD_BUF, MR_NULL);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_CLR_WR_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
不依赖SERIAL接口:
|
||||
|
||||
```c
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_RD_BUF, MR_NULL);
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_WR_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
### 获取读/写缓冲区数据大小
|
||||
|
||||
```c
|
||||
@@ -147,6 +182,18 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_RD_DATASZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_WR_DATASZ, &size);
|
||||
```
|
||||
|
||||
不依赖SERIAL接口:
|
||||
|
||||
```c
|
||||
size_t size = 0;
|
||||
|
||||
/* 获取读缓冲区数据大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_DATASZ, &size);
|
||||
|
||||
/* 获取写缓冲区数据大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_WR_DATASZ, &size);
|
||||
```
|
||||
|
||||
### 设置/获取读/写回调函数
|
||||
|
||||
```c
|
||||
@@ -173,6 +220,32 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_SET_WR_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_WR_CALL, &callback);
|
||||
```
|
||||
|
||||
不依赖SERIAL接口:
|
||||
|
||||
```c
|
||||
/* 定义回调函数 */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* 获取缓冲区数据大小 */
|
||||
ssize_t data_size = *(ssize_t *)args;
|
||||
|
||||
/* 处理中断 */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* 设置读回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
/* 获取读回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
|
||||
/* 设置写回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_WR_CALL, &call);
|
||||
/* 获取写回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_WR_CALL, &callback);
|
||||
```
|
||||
|
||||
## 读取SERIAL设备数据
|
||||
|
||||
```c
|
||||
|
||||
@@ -104,6 +104,19 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_SET_CONFIG, &config);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
Independent of SERIAL interface:
|
||||
|
||||
```c
|
||||
/* Set default configuration */
|
||||
int config[] = {115200, 8, 1, 0, 0, 0};
|
||||
|
||||
/* Set SERIAL device configuration */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, &config);
|
||||
|
||||
/* Get SERIAL device configuration */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
Note: If not configured manually, the default configuration is:
|
||||
|
||||
- Baud rate: `115200`
|
||||
@@ -131,6 +144,24 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_SET_WR_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_WR_BUFSZ, &size);
|
||||
```
|
||||
|
||||
Independent of SERIAL interface:
|
||||
|
||||
```c
|
||||
size_t size = 256;
|
||||
|
||||
/* Set read buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_BUFSZ, &size);
|
||||
|
||||
/* Get read buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_BUFSZ, &size);
|
||||
|
||||
/* Set write buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_WR_BUFSZ, &size);
|
||||
|
||||
/* Get write buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_WR_BUFSZ, &size);
|
||||
```
|
||||
|
||||
Note: If not configured manually, the size configured in `Kconfig` will be used (default is 32Byte).
|
||||
|
||||
### Clear Read/Write Buffer
|
||||
@@ -140,6 +171,13 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_CLR_RD_BUF, MR_NULL);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_CLR_WR_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
Independent of SERIAL interface:
|
||||
|
||||
```c
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_RD_BUF, MR_NULL);
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_WR_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
### Get Read/Write Buffer Data Size
|
||||
|
||||
```c
|
||||
@@ -152,6 +190,18 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_RD_DATASZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_WR_DATASZ, &size);
|
||||
```
|
||||
|
||||
Independent of SERIAL interface:
|
||||
|
||||
```c
|
||||
size_t size = 0;
|
||||
|
||||
/* Get read buffer data size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_DATASZ, &size);
|
||||
|
||||
/* Get write buffer data size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_WR_DATASZ, &size);
|
||||
```
|
||||
|
||||
### Set/Get Read/Write Callback Function
|
||||
|
||||
```c
|
||||
@@ -180,6 +230,34 @@ mr_dev_ioctl(ds, MR_CTL_SERIAL_SET_WR_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_SERIAL_GET_WR_CALL, &callback);
|
||||
```
|
||||
|
||||
Independent of SERIAL interface:
|
||||
|
||||
```c
|
||||
/* Define callback function */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* Get buffer data size */
|
||||
ssize_t data_size = *(ssize_t *)args;
|
||||
|
||||
/* Handle interrupt */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* Set read callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
|
||||
/* Get read callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
|
||||
/* Set write callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_WR_CALL, &call);
|
||||
|
||||
/* Get write callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_WR_CALL, &callback);
|
||||
```
|
||||
|
||||
## Read Data from SERIAL Device
|
||||
|
||||
```c
|
||||
|
||||
@@ -126,6 +126,18 @@ mr_dev_ioctl(ds, MR_CTL_SPI_SET_CONFIG, &config);
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
不依赖SPI接口:
|
||||
|
||||
```c
|
||||
/* 设置默认配置 */
|
||||
int config[] = {3000000, 0, 0, 8, 1, 8};
|
||||
|
||||
/* 设置SPI设备配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, &config);
|
||||
/* 获取SPI设备配置 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
注:
|
||||
|
||||
- 如未手动配置,默认配置为:
|
||||
@@ -150,6 +162,17 @@ uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_REG, ®);
|
||||
```
|
||||
|
||||
不依赖SPI接口:
|
||||
|
||||
```c
|
||||
/* 设置寄存器值 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_OFFSET, MR_MAKE_LOCAL(int, 0x12));
|
||||
|
||||
/* 获取寄存器值 */
|
||||
uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_OFFSET, ®);
|
||||
```
|
||||
|
||||
注:
|
||||
|
||||
- 寄存器值仅在主机模式下生效。
|
||||
@@ -167,6 +190,17 @@ mr_dev_ioctl(ds, MR_CTL_SPI_SET_RD_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
不依赖SPI接口:
|
||||
|
||||
```c
|
||||
size_t size = 256;
|
||||
|
||||
/* 设置读缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_BUFSZ, &size);
|
||||
/* 获取读缓冲区大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
注:如未手动配置,将使用 `Kconfig`中配置的大小(默认为32Byte)。只有在从机模式下才使用读缓冲区。
|
||||
|
||||
### 清空读缓冲区
|
||||
@@ -175,6 +209,12 @@ mr_dev_ioctl(ds, MR_CTL_SPI_GET_RD_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
不依赖SPI接口:
|
||||
|
||||
```c
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
### 获取读缓冲区数据大小
|
||||
|
||||
```c
|
||||
@@ -184,6 +224,15 @@ size_t size = 0;
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
不依赖SPI接口:
|
||||
|
||||
```c
|
||||
size_t size = 0;
|
||||
|
||||
/* 获取读缓冲区数据大小 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
### 设置/获取读回调函数
|
||||
|
||||
```c
|
||||
@@ -205,6 +254,27 @@ mr_dev_ioctl(ds, MR_CTL_SPI_SET_RD_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
不依赖SPI接口:
|
||||
|
||||
```c
|
||||
/* 定义回调函数 */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* 获取缓冲区数据大小 */
|
||||
ssize_t data_size = *(ssize_t *)args;
|
||||
|
||||
/* 处理中断 */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* 设置读回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
/* 获取读回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
### 全双工传输
|
||||
|
||||
```c
|
||||
@@ -226,6 +296,27 @@ if (size < 0)
|
||||
}
|
||||
```
|
||||
|
||||
不依赖SPI接口:
|
||||
|
||||
```c
|
||||
/* 定义传输结构体 */
|
||||
uint8_t buf[] = {0x01, 0x02, 0x03, 0x04};
|
||||
struct
|
||||
{
|
||||
void *rd_buf;
|
||||
const void *wr_buf;
|
||||
size_t size;
|
||||
} transfer = {buf, buf, sizeof(buf)};
|
||||
|
||||
/* 全双工传输 */
|
||||
ssize_t size = mr_dev_ioctl(ds, (0x01 << 8), &transfer);
|
||||
/* 是否传输成功 */
|
||||
if (size < 0)
|
||||
{
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
## 读取SPI设备数据
|
||||
|
||||
```c
|
||||
|
||||
@@ -130,6 +130,19 @@ mr_dev_ioctl(ds, MR_CTL_SPI_SET_CONFIG, &config);
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
Independent of SPI interface:
|
||||
|
||||
```c
|
||||
/* Set default configuration */
|
||||
int config[] = {3000000, 0, 0, 8, 1, 8};
|
||||
|
||||
/* Set SPI device configuration */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, &config);
|
||||
|
||||
/* Get SPI device configuration */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &config);
|
||||
```
|
||||
|
||||
Note:
|
||||
|
||||
- If not configured manually, the default configuration is:
|
||||
@@ -156,6 +169,17 @@ uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_REG, ®);
|
||||
```
|
||||
|
||||
Independent of SPI interface:
|
||||
|
||||
```c
|
||||
/* Set register value */
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_SET_REG, MR_MAKE_LOCAL(int, 0x12));
|
||||
|
||||
/* Get register value */
|
||||
uint8_t reg;
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_REG, ®);
|
||||
```
|
||||
|
||||
Note:
|
||||
|
||||
- The register value is only effective in master mode.
|
||||
@@ -174,6 +198,18 @@ mr_dev_ioctl(ds, MR_CTL_SPI_SET_RD_BUFSZ, &size);
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
Independent of SPI interface:
|
||||
|
||||
```c
|
||||
size_t size = 256;
|
||||
|
||||
/* Set read buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_BUFSZ, &size);
|
||||
|
||||
/* Get read buffer size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_BUFSZ, &size);
|
||||
```
|
||||
|
||||
Note: If not set manually, it will use the size configured in `Kconfig` (default 32Byte). The read buffer is only used
|
||||
in slave mode.
|
||||
|
||||
@@ -183,6 +219,12 @@ in slave mode.
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
Independent of SPI interface:
|
||||
|
||||
```c
|
||||
mr_dev_ioctl(ds, MR_CTL_CLR_RD_BUF, MR_NULL);
|
||||
```
|
||||
|
||||
### Get Read Buffer Data Size
|
||||
|
||||
```c
|
||||
@@ -192,6 +234,15 @@ size_t size = 0;
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
Independent of SPI interface:
|
||||
|
||||
```c
|
||||
size_t size = 0;
|
||||
|
||||
/* Get read buffer data size */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_DATASZ, &size);
|
||||
```
|
||||
|
||||
### Set/Get Read Callback Function
|
||||
|
||||
```c
|
||||
@@ -214,6 +265,28 @@ mr_dev_ioctl(ds, MR_CTL_SPI_SET_RD_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_SPI_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
Independent of SPI interface:
|
||||
|
||||
```c
|
||||
/* Define callback function */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* Get buffer data size */
|
||||
ssize_t data_size = *(ssize_t *)args;
|
||||
|
||||
/* Handle interrupt */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* Set read callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
|
||||
/* Get read callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
### Full-Duplex Transmission
|
||||
|
||||
```c
|
||||
@@ -236,6 +309,28 @@ if (size < 0)
|
||||
}
|
||||
```
|
||||
|
||||
Independent of SPI interface:
|
||||
|
||||
```c
|
||||
/* Define transfer structure */
|
||||
uint8_t buf[] = {0x01, 0x02, 0x03, 0x04};
|
||||
struct
|
||||
{
|
||||
void *rd_buf;
|
||||
const void *wr_buf;
|
||||
size_t size;
|
||||
} transfer = {buf, buf, sizeof(buf)};
|
||||
|
||||
/* Full-duplex transmission */
|
||||
ssize_t size = mr_dev_ioctl(ds, (0x01 << 8), &transfer);
|
||||
|
||||
/* Check if transmission succeeded */
|
||||
if (size < 0)
|
||||
{
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
## Read SPI Device Data
|
||||
|
||||
```c
|
||||
|
||||
@@ -85,6 +85,20 @@ int mode;
|
||||
mr_dev_ioctl(ds, MR_CTL_TIMER_GET_MODE, &mode);
|
||||
```
|
||||
|
||||
不依赖TIMER接口:
|
||||
|
||||
```c
|
||||
/* 定义TIMER设备模式 */
|
||||
#define TIMER_MODE 1
|
||||
|
||||
/* 设置TIMER设备模式 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, TIMER_MODE));
|
||||
|
||||
/* 获取TIMER设备模式 */
|
||||
int mode;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &mode);
|
||||
```
|
||||
|
||||
注:如未手动配置,默认配置为:
|
||||
|
||||
- 模式:`MR_TIMER_MODE_PERIOD`
|
||||
@@ -107,6 +121,24 @@ mr_dev_ioctl(ds, MR_CTL_TIMER_SET_TIMEOUT_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_TIMER_GET_TIMEOUT_CALL, &callback);
|
||||
```
|
||||
|
||||
不依赖TIMER接口:
|
||||
|
||||
```c
|
||||
/* 定义回调函数 */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* 处理中断 */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* 设置超时回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
/* 获取超时回调函数 */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
## 读取TIMER设备运行时间
|
||||
|
||||
```c
|
||||
|
||||
@@ -87,6 +87,20 @@ int mode;
|
||||
mr_dev_ioctl(ds, MR_CTL_TIMER_GET_MODE, &mode);
|
||||
```
|
||||
|
||||
Independent of TIMER interface:
|
||||
|
||||
```c
|
||||
/* Define TIMER device mode */
|
||||
#define TIMER_MODE 1
|
||||
|
||||
/* Set TIMER device mode */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_CONFIG, MR_MAKE_LOCAL(int, TIMER_MODE));
|
||||
|
||||
/* Get TIMER device mode */
|
||||
int mode;
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_CONFIG, &mode);
|
||||
```
|
||||
|
||||
Note: The default configuration is:
|
||||
|
||||
- Mode: `MR_TIMER_MODE_PERIOD` if not manually configured.
|
||||
@@ -109,6 +123,24 @@ mr_dev_ioctl(ds, MR_CTL_TIMER_SET_TIMEOUT_CALL, &call);
|
||||
mr_dev_ioctl(ds, MR_CTL_TIMER_GET_TIMEOUT_CALL, &callback);
|
||||
```
|
||||
|
||||
Independent of TIMER interface:
|
||||
|
||||
```c
|
||||
/* Define callback function */
|
||||
int call(int desc, void *args)
|
||||
{
|
||||
/* Handle interrupt */
|
||||
|
||||
return MR_EOK;
|
||||
}
|
||||
int (*callback)(int, void *args);
|
||||
|
||||
/* Set timeout callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_SET_RD_CALL, &call);
|
||||
/* Get timeout callback function */
|
||||
mr_dev_ioctl(ds, MR_CTL_GET_RD_CALL, &callback);
|
||||
```
|
||||
|
||||
## Read Running Time of TIMER Device
|
||||
|
||||
```c
|
||||
|
||||
Reference in New Issue
Block a user