|
楼主 |
发表于 2022-3-19 15:57:57
|
显示全部楼层
- /*-------------------------------------------------------------------------------
- spi_in MOSI RP2040输入数据
- -------------------------------------------------------------------------------*/
- #define spi_in_wrap_target 2 // 循环入口
- #define spi_in_wrap 5 // 循环末尾
- static const uint16_t spi_in_program_instructions[] = {
- C_MOV | MOV_DEST_ISR | MOV_SRC_NULL, // 输入计数器清零同步
- C_WAIT | WAIT_FOR_0 | WAIT_SRC_GPIO | PIN_CS, // 等待CS引脚变为0(平时CS = 1)
- // 循环入口 2
- C_WAIT | WAIT_FOR_1 | WAIT_SRC_GPIO | PIN_SCK, // 等待SCK引脚变为1(平时SCK = 0)
- C_WAIT | WAIT_FOR_0 | WAIT_SRC_GPIO | PIN_SCK, // 等待SCK引脚变为0(平时SCK = 0)
- C_IN | IN_SRC_PINS | 1, // 读取MISO口线,送到ISR输入移位寄存器,1个bit
- C_JMP | IF_PIN, 0 // 如果CS引脚变高时跳到第0个指令 CS 为 EXECCTRL_JMP_PIN.
- // goto 2
- };
- /*-------------------------------------------------------------------------------
- spi_out MISO RP2040输出数据
- -------------------------------------------------------------------------------*/
- #define spi_out_wrap_target 2 // 循环入口
- #define spi_out_wrap 5 // 循环末尾
- static const uint16_t spi_out_program_instructions[] = {
- C_MOV | MOV_DEST_OSR | MOV_SRC_NULL, // 输出计数器清零同步
- C_WAIT | WAIT_FOR_0 | WAIT_SRC_GPIO | PIN_CS, // 等待CS引脚变为0(平时CS = 1)
- // 循环入口 2
- C_OUT | OUT_DEST_PINS | 1, // 输出
- C_WAIT | WAIT_FOR_1 | WAIT_SRC_GPIO | PIN_SCK, // 等待SCK引脚变为1(平时SCK = 0)
- C_WAIT | WAIT_FOR_0 | WAIT_SRC_GPIO | PIN_SCK, // 等待SCK引脚变为0(平时SCK = 0)
- C_JMP | IF_PIN, 0 // 如果CS引脚变高时跳到第0个指令 CS 为 EXECCTRL_JMP_PIN.
- };
复制代码
|
|