关于c6748spi传输函数的用法 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4242|回复: 1

[未解决] 关于c6748spi传输函数的用法

[复制链接]

2

主题

4

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2018-6-22 21:11:24 | 显示全部楼层 |阅读模式
最近需要写个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;

}

这个函数有什么问题么?传输不成功,谢谢指出错误
回复

使用道具 举报

3

主题

524

帖子

2083

积分

创龙

Rank: 8Rank: 8

积分
2083
发表于 2018-6-25 18:01:09 | 显示全部楼层
您好,我们还尚未验证用spi传输16位的数据,但是基于8位改为16位的upp例程有很多,你可以对比参考一下。,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-4-19 00:18 , Processed in 0.036837 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表