Part Number:LAUNCHXL-CC3235SFOther Parts Discussed in Thread:CC3235SF, ADS1299
移植了SPI的驱动后,用示波器测SCLK引脚和MOSI引脚,都没有波形出现,用万用表测试也没有电压值,请问怎么解决呢?怎么才能知道SPI通信正常呢?
Susan Yang:
wu 说:用示波器测SCLK引脚和MOSI引脚,都没有波形出现,用万用表测试也没有电压值,
看起来是硬件连接有问题。您是否有使用开发板直接测试例程?
C:\ti\simplelink_cc32xx_sdk_5_20_00_06\examples\rtos\CC3235SF_LAUNCHXL\drivers
若是可以,请您详细说明下您现在的情况
,
wu:
是的,我是用SPI_master例程直接烧进去的
,
Susan Yang:
您可以看一下 simplelink_cc32xx_sdk_5_20_00_06/examples/rtos/CC3235SF_LAUNCHXL/drivers/spimaster/README.html
您现在是否有接从机?
,
wu:
请问这几个设置是什么意思呢?能介绍一下这个结构体各个函数的作用是什么嘛?
,
Susan Yang:
1 配置中断优先级
3 配置SPI极性
4 发送缓冲区大小
,
wu:
这两个不懂,这个极性的配置是CS在高电平的时候才能收发数据嘛,然后时钟SPI_HW_CTRL_CS与SPI_SW_CTRL_CS的区别是什么?
,
Susan Yang:
wu 说:时钟SPI_HW_CTRL_CS与SPI_SW_CTRL_CS的区别是什么?
抱歉,这里是指CS片选是否是通过 GPIO 手动选择从设备
,
wu:
哪个是要通过GPIO手动选择从设备呢,还有下图这个是指在CS高电平的时候才能收发数据嘛
,
Susan Yang:
您可以看一下
https://www.ti.com.cn/cn/lit/ug/swru543a/swru543a.pdf
8.3.2 Master Mode Operation Without Interrupt (Polling)
,
wu:
看不懂,您跟我说一下呗,然后SPI_HW_CTRL_CS与SPI_SW_CTRL_CS哪个是通过GPIO手动选择从设备啊,麻烦回答清楚一点,谢谢
,
Susan Yang:
The Slave Select line can be controlled by the hardware (HW) or by the driver (SW).
It is only applicable in 4 pin mode.
Please refer to the TRM for more details (https://www.ti.com/lit/pdf/swru465).
,
wu:
有一个问题请教一下,就是我在开发板上用示波器测MOSI引脚的时候,能够测到该引脚的电平是3.3V左右,但是当开发板接上ADS1299芯片的时候,也是通过SPI进行通信的,这时候用示波器测MOSI的时候测到的电平只有几毫伏,请问这是什么原因呢?
,
Susan Yang:
能否给出您的整体波形?
SPI的时序可以看一下网络上的一些分享
https://zhuanlan.zhihu.com/p/52595936
,
wu:
这是我直接在开发板上用SPI一直发送OXF0,为什么会没八个波形就出现一个带宽比较大,而且中间隔了那么多的时钟没有发送数据,我是一直循环发送0xf0的,但是中间却隔了那么多的周期没有发送数据,这是什么原因呢?请尽快回复,谢谢。
,
Susan Yang:
您指的是SPICLK中的差距,在示波器上以红色突出显示的内容吗?这种差距是正常的,不能用 CC32xx SPI 硬件改变。它不应该对系统产生显着的性能影响。
至于“中间却隔了那么多的周期没有发送数据”,您指的是SPICLK间隙还是其他什么?
,
wu:
就是我SPI一直发送0xf0数据,按道理就是八个时钟周期发一个数据,但是我在示波器上看到的是看到0xf0后,后面隔了好多个时钟周期才会发出第二个数据,这是为什么呢?
,
Susan Yang:
请您直接在下面的帖子回复
https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1036197/launchxl-cc3235sf-spi/3832304#3832304
,
wu:
我的transfercount是4字节,他说的传输大小是这个嘛?
,
wu:
请问我一直循环发送0xf0数据,但是为什么在发了一个数据之后会隔那么长的时间才发送第二个数据呢?正常的时钟不是一直循环发送的话不是时钟一直都有波形的嘛?但是我这个为什么中间隔了这么长的时间呢?请尽快答复,急,谢谢~
,
Susan Yang:
为了更高效,您可以在英文链接直接回复专家
https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1036197/launchxl-cc3235sf-spi/3832304#3832304
,
wu:
我回复不了,您帮我回复一下,谢谢
,
wu:
1.您好,请问使用GPIO的复用功能SPI通信,需要对对应的GPIO引脚设置复用成哪个引脚对应SPI的哪个引脚嘛,然后还需要开启相应的GPIO或SPI时钟嘛?还是只需要直接在syscfg里这样设置就可以了,然后也不用对SPI引脚进行设置成推挽输出之类的,也不用打开SPI对应的时钟了?
2.请问我想设置相关的使能引脚设置成推挽输出应该选择下面哪一个呢?,比如我这样写是不是将引脚设置成推挽输出了呢【GPIO_setConfig(CONFIG_ADS1299_EN, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_OD_PU);】?
,
Susan Yang:
wu 说:我的transfercount是4字节,他说的传输大小是这个嘛?
请查看该链接内工程师的回复
https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1036197/launchxl-cc3235sf-spi/3832304#3832304
,
Susan Yang:
wu 说:请问使用GPIO的复用功能SPI通信,需要对对应的GPIO引脚设置复用成哪个引脚对应SPI的哪个引脚嘛
您可以参考一下例程内的设置
simplelink_cc32xx_sdk_5_20_00_06\examples\rtos\CC3235SF_LAUNCHXL\drivers\spimaster
wu 说:比如我这样写是不是将引脚设置成推挽输出了呢【GPIO_setConfig(CONFIG_ADS1299_EN, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_OD_PU);
是的,可以看一下宏定义
#define GPIO_CFG_OUTPUT (((uint32_t) 0) << GPIO_CFG_IO_LSB) /*!< @hideinitializer Pin is an output. */#define GPIO_CFG_OUT_STD (((uint32_t) 0) << GPIO_CFG_IO_LSB) /*!< @hideinitializer Output pin is actively driven high and low */#define GPIO_CFG_OUT_OD_NOPULL (((uint32_t) 2) << GPIO_CFG_IO_LSB) /*!< @hideinitializer Output pin is Open Drain */#define GPIO_CFG_OUT_OD_PU (((uint32_t) 4) << GPIO_CFG_IO_LSB) /*!< @hideinitializer Output pin is Open Drain w/ pull up */#define GPIO_CFG_OUT_OD_PD (((uint32_t) 6) << GPIO_CFG_IO_LSB) /*!< @hideinitializer Output pin is Open Drain w/ pull dn */
,
wu:
如何将一个引脚初始化成中断呢,请问我这样设置对嘛,不用设置中断通道的选择、抢占优先级、子优先级、中断请求等等的配置嘛?
,
Susan Yang:
请您看一下例程
simplelink_cc32xx_sdk_5_20_00_06\examples\rtos\CC3235SF_LAUNCHXL\drivers\gpiointerrupt
,
wu:
请问SPI通信SCLK的速率最高可以设置成多少
,
Susan Yang:
30 MHz,请仔细阅读数据手册50页
,
wu:
请问串口的波特率可以修改的嘛,为什么我在syscfg里修改了波特率会出现错误呢?
,
Susan Yang:
新问题的话,建议您详细描述后重新发帖