立即注册
查看: 1113|回复: 0

[MTK软件经验分享] SPI demo code及使用注意事项

已绑定手机
已实名认证
发表于 2019-5-30 15:33:18 | 显示全部楼层 |阅读模式 来自 广东省深圳市
目前比较多的外设会用到spi interface,MT6260及之前的平台都有提供spi slave 功能。此FAQ旨在描述spi driver的使用方法及使用过程中会遇到的问题及解决方法。
[SOLUTION]
spi driver 路径如下:
.\hal\peripheral\src\spi_hal.c
请参考如下代码
spi_hal.c/h
#define SPI_TEST_BUFFER_SIZE (128*16)
__attribute__ ((section ("NONCACHEDRW"), aligned(4)))
kal_uint8 spi_test_buffer1[SPI_TEST_BUFFER_SIZE];
__attribute__ ((section ("NONCACHEDRW"), aligned(4)))
kal_uint8 spi_test_buffer2[SPI_TEST_BUFFER_SIZE];
static SPI_HANDLE handle;
void spi_test(void)
{
SPI_CONFIG_PARAM_T param;
SPI_RESULTstatus;
handle = spi_open(0);
param.cs_setup_time = 5;
param.cs_hold_time = 5;
param.cs_idle_time = 5;
param.clk_low_time = 5;
param.clk_high_time = 5;
param.tx_msbf = SPI_MSBF_LSB;
param.rx_msbf = SPI_MSBF_LSB;
param.tx_endian = SPI_ENDIAN_LITTLE;
param.rx_endian = SPI_ENDIAN_LITTLE;
param.clk_polarity = SPI_CPOL_B0;
param.clk_fmt = SPI_CPHA_B0;
status = spi_configure(handle, ¶m);
if(status != SPI_RESULT_OK)
{
kal_prompt_trace(MOD_ATCI, "spi config fail \r\n");
}
// polling write
memset(spi_test_buffer1, 0x55, SPI_TEST_BUFFER_SIZE);
status = spi_write(handle, spi_test_buffer1, 16, 1, NULL);
if(status != SPI_RESULT_OK)
{
kal_prompt_trace(MOD_ATCI, "spi write fail \r\n");
}
spi_close(handle);
}
注意事项;
1、调用spi接口后需要检查返回值,防止中间过程失败而导致spi无法正常工作;
2、 调用spi_write
packet size1024
packet count256
256K bytebuffer
3 spi driverbuffernon cachedrw

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表