![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测 . 技术文库 . 会员区 . 开发板 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| DSP281X硬件SPI读写一体化C++函数(驱动74hc595) | |||||
作者:HotPower 文章来源:HotPower 点击数: 更新时间:2008-4-24 ![]() |
|||||
|
void SystemObj::InitSpi(void) { EALLOW; GpioMuxRegs.GPFMUX.all |= 0x000F; // Select GPIOs to be SPI pins // Port F MUX - x000 0000 0000 1111 EDIS; // Initialize SPI FIFO registers SpiaRegs.SPIFFTX.all=0xE040; SpiaRegs.SPIFFRX.all=0x204f; SpiaRegs.SPIFFCT.all=0x0; SpiaRegs.SPICCR.all =0x0008; // Reset on, rising edge, 8-bit char bits SpiaRegs.SPICTL.all =0x0006; // Enable master mode, normal phase, // enable talk, and SPI int disabled. SpiaRegs.SPIBRR =0x007F; SpiaRegs.SPICCR.all =0x009F; // Relinquish SPI from Reset SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission //(CLKPOLARITY,CLK_PHASE )01 10支持74HC595,00或11不支持 测试通过 SpiaRegs.SPICCR.bit.CLKPOLARITY = 1; SpiaRegs.SPICTL.bit.CLK_PHASE = 0; System.SpiReadWrite(0xff);//LED数码管灭 //发送595锁存脉冲信号RCLK SpiRclkRegs = 0; SpiRclkRegs = 1; } //硬件SPI读写一体化函数 unsigned char SystemObj::SpiReadWrite(unsigned char cData) { SpiaRegs.SPITXBUF = cData; // Wait until data is received while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { // KickDog();//喂狗测试 } // Check against sent data return SpiaRegs.SPIRXBUF; } //数码管 #define LedSegA 0x01 #define LedSegB 0x02 #define LedSegC 0x04 #define LedSegD 0x08 #define LedSegE 0x10 #define LedSegF 0x20 #define LedSegG 0x40 #define LedSegH 0x80 /* #define LedSegA 0x80 #define LedSegB 0x40 #define LedSegC 0x20 #define LedSegD 0x10 #define LedSegE 0x08 #define LedSegF 0x04 #define LedSegG 0x02 #define LedSegH 0x01 */ #define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF ) #define LedChar1 ( LedSegB + LedSegC ) #define LedChar2 (LedSegA + LedSegB + LedSegD + LedSegE + LedSegG) #define LedChar3 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegG) #define LedChar4 ( LedSegB + LedSegC + LedSegF + LedSegG) #define LedChar5 (LedSegA + LedSegC + LedSegD + LedSegF + LedSegG) #define LedChar6 (LedSegA + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG) #define LedChar7 (LedSegA + LedSegB + LedSegC ) #define LedChar8 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG) #define LedChar9 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegF + LedSegG) #define LedCharA (LedSegA + LedSegB + LedSegC + LedSegE + LedSegF + LedSegG) #define LedCharB ( LedSegC + LedSegD + LedSegE + LedSegF + LedSegG) #define LedCharC (LedSegA + LedSegD + LedSegE + LedSegF ) #define LedCharD ( LedSegB + LedSegC + LedSegD + LedSegE + LedSegG) #define LedCharE (LedSegA + LedSegD + LedSegE + LedSegF + LedSegG) #define LedCharF (LedSegA + LedSegE + LedSegF + LedSegG) interrupt void ISRTimer2(void) { //以下定义为共阳数码管 static const unsigned char LedTab[] = {//显示字符表存放在ROM中 LedChar0, LedChar1, LedChar2, LedChar3, LedChar4, LedChar5, LedChar6, LedChar7, LedChar8, LedChar9, LedCharA, LedCharB, LedCharC, LedCharD, LedCharE, LedCharF }; System.SpiReadWrite(~LedTab[Timer.Count2 & 0x0f]);//硬件SPI读写一体化函数 Timer.Count2++; //发送595锁存脉冲信号RCLK SpiRclkRegs = 0; SpiRclkRegs = 1; } //数码管 #define LedSegA 0x01 #define LedSegB 0x02 #define LedSegC 0x04 #define LedSegD 0x08 #define LedSegE 0x10 #define LedSegF 0x20 #define LedSegG 0x40 #define LedSegH 0x80 /* #define LedSegA 0x80 #define LedSegB 0x40 #define LedSegC 0x20 #define LedSegD 0x10 #define LedSegE 0x08 #define LedSegF 0x04 #define LedSegG 0x02 #define LedSegH 0x01 */ #define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF ) #define LedChar1 ( LedSegB + LedSegC ) #define LedChar2 (LedSegA + LedSegB + LedSegD + LedSegE + LedSegG) #define LedChar3 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegG) #define LedChar4 ( LedSegB + LedSegC + LedSegF + LedSegG) #define LedChar5 (LedSegA + LedSegC + LedSegD + LedSegF + LedSegG) #define LedChar6 (LedSegA + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG) #define LedChar7 (LedSegA + LedSegB + LedSegC ) #define LedChar8 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG) #define LedChar9 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegF + LedSegG) #define LedCharA (LedSegA + LedSegB + LedSegC + LedSegE + LedSegF + LedSegG) #define LedCharB ( LedSegC + LedSegD + LedSegE + LedSegF + LedSegG) #define LedCharC (LedSegA + LedSegD + LedSegE + LedSegF ) #define LedCharD ( LedSegB + LedSegC + LedSegD + LedSegE + LedSegG) #define LedCharE (LedSegA + LedSegD + LedSegE + LedSegF + LedSegG) #define LedCharF (LedSegA + LedSegE + LedSegF + LedSegG) |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|