补一个Part2
接口函数
MCU 的 SPI 主要用于主从机的通信,AMetal提供了8个接口函数。
函数原型
| 功能简介
| void am_spi_mkdev(
am_spi_device_t *p_dev,
am_spi_handle_t handle,
uint8_t bits_per_word,
uint16_t mode,
uint32_t max_speed_hz,
int cs_pin,
void (*pfunc_cs)(am_spi_device_t *p_dev, int state))
| SPI 从机实例初始化
| int am_spi_setup (am_spi_device_t *p_dev)
| 设置 SPI 从机实例
| void am_spi_mktrans(
am_spi_transfer_t *p_trans,
const void *p_txbuf,
void *p_rxbuf,
uint32_t nbytes,
uint8_t cs_change,
uint8_t bits_per_word,
uint16_t delay_usecs,
uint32_t speed_hz,
uint32_t flags)
| SPI 传输初始化
| void am_spi_msg_init(
am_spi_message_t *p_msg,
am_pfnvoid_t pfn_complete,
void *p_arg)
| SPI 消息初始化
| void am_spi_trans_add_tail(
am_spi_message_t *p_msg,
am_spi_transfer_t *p_trans)
| 添加传输至消息中
| int am_spi_msg_start (
am_spi_device_t *p_dev,
am_spi_message_t *p_msg)
| 启动 SPI 消息处理
| int am_spi_write_then_read(
am_spi_device_t *p_dev,
const uint8_t *p_txbuf,size_t n_tx,
uint8_t *p_rxbuf,size_t n_rx)
| SPI 先写后读
| int am_spi_write_then_write (
am_spi_device_t *p_dev,
const uint8_t *p_txbuf0,
size_t n_tx0,
const uint8_t *p_txbuf1,
size_t n_tx1)
| 执行 SPI 两次写
| 表2 SPI 标准接口函数
本例中选择MX25L1606 为从机,MCU通过SPI对它写入数据。MX25L1606总容量为 16M(16× 1024× 1024)bits,即2M字节。每个字节对应一个存储地址,因此其存储数据的地址范围为 0x000000 ~ 0x1FFFFF。
|