【分享】+TMS320F28335部分模块使用经验

2019-07-27 22:26发布

本帖最后由 TLZme 于 2013-12-24 15:14 编辑

TMS320F28335部分模块个人使用经验
28335+总线:硬件连接情况(28335+cpld+ad7606)Cpld负责对地址译码,16位数据线接并口AD7606D0D15,再用几个GPIO分别接ad7606busyresetCONVST.软件思想:timer0控制采样速率,busy配置为外部中断输入脚,转换完成即可触发中断,在外部中断函数里把转换结果读取。遇到问题:数据线上只有D0D7有数据变换,D8D15全为0问题分析:D8D15和地短路了,busy时间太短、不能触发中断,ad配置为了8位模式,等等…解决问题:把问题一个个排除,最后原因是数据线D8D15cpld连接部分未定义。
28335+SCI模块:硬件连接:F28335有三个串口,SCIA、SCIB、SCIC这里用SCIC+232芯片接口即可与  PC机通信。功能验证:使用串口调试助手发送数据,28335收到数据后再发给PC软件设计:使用FIFO、查询方式发送和接收数据、配置好相应的寄存器就可以使用了,主要代码分享如下。
for(){        while(ScicRegs.SCIFFRX.bit.RXFFST == 0); { } data = ScicRegs.SCIRXBUF.all;                 
ScicRegs.SCITXBUF= data;while(ScicRegs.SCIFFTX.bit.TXFFST != 0);}
void scic_init()    //初始化{ ScicRegs.SCICCR.all =0x0007; ScicRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,                                   // Disable RX ERR, SLEEP, TXWAKE ScicRegs.SCICTL2.all =0x0; #if (CPU_FRQ_150MHZ)              ScicRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.              ScicRegs.SCILBAUD    =0x00E7; #endif #if (CPU_FRQ_100MHZ)      ScicRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 20MHz.      ScicRegs.SCILBAUD    =0x0044; #endif            ScicRegs.SCIFFTX.bit.TXFIFOXRESET=0;    ScicRegs.SCIFFRX.bit.RXFIFORESET=0;    ScicRegs.SCIFFTX.all=0xE040;    ScicRegs.SCIFFRX.all=0x2040;    ScicRegs.SCIFFCT.all=0x0;     ScicRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset}
28335+I2C模块:注意一下两点1、从机地址:由于28335I2C模块会自动添加R/W应将从机地址右移一位。如:选用模块7位地址模式时,若使用的I2C芯片从机地址为0xD0,则设置时应置从机地址为0x682、子地址:I2C器件的子地址有的是8位、有的是16位,16位的发送子地址的时候要发送2次、分别发高8位和低8位,因为28335I2C模块数据发送寄存器是8位的。
28335+SPI模块:1、主设备配置SPI模块的时钟模式时要根据从设备的时钟要求,要搞清楚从设备发送和接收数据是在时钟的上升沿还是下降沿。时钟配置正确后,数据才能被准确的发送和接收。2主设备读取数据时必须先发送一个无意义的数以启动时钟。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。