1.文档新增无依赖使用说明。

This commit is contained in:
MacRsh
2024-01-18 03:29:46 +08:00
parent 3f6770b2b1
commit c2cbabf40b
14 changed files with 735 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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, &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, &reg);
```
注:
- 寄存器值仅在主机模式下生效。
@@ -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

View File

@@ -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, &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, &reg);
```
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

View File

@@ -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);
```
注:
- 设置外部中断模式前需要先配置回调函数,否则将成为无回调中断。

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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, &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, &reg);
```
注:
- 寄存器值仅在主机模式下生效。
@@ -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

View File

@@ -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, &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, &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

View File

@@ -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

View File

@@ -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