完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近需要写个c6748用spi传输16位的数据,根据创龙提供的SPI_DAC_AD5724V2例程里的SpiTransfer函数修改了自己的函数。因为原函数是传输8位,我想改成一个带变量的可以传输16位数据的函数,但是不成功,不知道错在哪里,初学者请赐教!例程函数如下省略其他函数
unsigned int tx_len; unsigned int rx_len; unsigned char tx_data[256]; unsigned char rx_data[256]; unsigned char *p_tx; unsigned char *p_rx; int SpiTransfer(void) { p_tx = &tx_data[0]; p_rx = &rx_data[0]; while(tx_len) { tx_len--; SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), (1<<2)); SPITransmitData1(SOC_SPI_1_REGS, *(p_tx+tx_len)); while( (HWREG(SOC_SPI_1_REGS + SPI_SPIBUF) & 0x80000000 ) ); rx_data[2-tx_len] = SPIDataReceive(SOC_SPI_1_REGS); } SPIDat1Config(SOC_SPI_1_REGS, (SPI_DATA_FORMAT0), (1<<2)); return ((rx_data[0]<<16) | (rx_data[1]<<8) | (rx_data[2])); } 自己改之后的函数如下: //SPIx 读写一个两个字节 //TxData:要写入的双字节 //返回值:读取到的双字节 signed short SPIx_ReadWriteBytes(signed short TxData) { signed short RxData; SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), (1<<7)); SPITransmitData1(SOC_SPI_1_REGS, TxData); while( (HWREG(SOC_SPI_1_REGS + SPI_SPIBUF) & 0x80000000 ) ); RxData = SPIDataReceive(SOC_SPI_1_REGS); SPIDat1Config(SOC_SPI_1_REGS, (SPI_DATA_FORMAT0), (1<<7)); return RxData; } 这个函数有什么问题么?传输不成功,谢谢指出错误 |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
基于RK3588J的6路MIPI CSI视频采集案例分享,多路视频系统必看!
1216 浏览 0 评论
591 浏览 0 评论
【创龙科技TL570x-EVM开发板试用体验】 GStreamer 功能测评
8563 浏览 8 评论
【创龙科技TL570x-EVM开发板试用体验】创龙TL5708-EVM开发板入手使用体验评测
6588 浏览 0 评论
【创龙TLZ7x-EasyEVM评估板试用连载】+3.环境搭建vmware+ubuntu详细教程(二)
1397 浏览 0 评论
836浏览 0评论
【创龙科技AM64x开发板试用体验】创龙科技AM64x开发板及核心板介绍
828浏览 0评论
【创龙科技AM64x开发板试用体验】创龙科技AM64x开发板--板卡调试软件安装
847浏览 0评论
【创龙科技AM64x开发板试用体验】AM64x开发板开箱测评
838浏览 0评论
求助! 关于使用自制底板插入创龙IMX8MM 核心板无法启动问题
489浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 02:09 , Processed in 0.509695 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号