首页
关于
友情链接
Search
1
使用Python绘制等值线图
6 阅读
2
STM32CUBEIDE使用Git&Gitee实现代码版本管理
6 阅读
3
使用DSP28335的Mcbsp复用成SPI驱动MCP23S09IO扩展芯片
5 阅读
4
欢迎使用 Typecho
4 阅读
5
关闭STM32CUBEIDE自动更新
4 阅读
默认分类
技术教程
登录
/
注册
找到
2
篇与
单片机
相关的结果
2025-04-01
使用DSP28335的Mcbsp复用成SPI驱动MCP23S09IO扩展芯片
在项目中用到了DSP的mcbsp复用成SPI功能,网上相关代码较少,CSDN部分资源付费,现将部分代码附上,包含MCP23S09驱动 void Drv_Mcbsp_Init(void) { // 1. 配置MCBSP的GPIO引脚 EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 3; // MDXB引脚 GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3; // MDRB引脚 GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3; // CLKX引脚 GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0; // FSX引脚 GpioCtrlRegs.GPADIR.bit.GPIO12 = 1; // MDXB引脚输出 GpioCtrlRegs.GPADIR.bit.GPIO13 = 0; // MDRB引脚输入 GpioCtrlRegs.GPADIR.bit.GPIO14 = 1; // CLKX引脚输出 GpioCtrlRegs.GPADIR.bit.GPIO15 = 1; // FSX引脚输出 McbspbRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter McbspbRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word, Digital loopback dis. McbspbRegs.MFFINT.all=0x0; // Disable all interrupts McbspbRegs.PCR.bit.FSXM = 1; //FSX generated internally, FSR derived from an external source McbspbRegs.PCR.bit.CLKXM = 1; //CLKX generated internally, CLKR derived from an external source McbspbRegs.PCR.bit.FSRM = 1; McbspbRegs.PCR.bit.CLKRM = 1; McbspbRegs.PCR.bit.SCLKME=0; McbspbRegs.PCR.bit.FSXP=1; McbspbRegs.PCR.bit.CLKXP=0; McbspbRegs.PCR.bit.CLKRP=1; McbspbRegs.SPCR1.bit.CLKSTP = 3; McbspbRegs.RCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Receive) McbspbRegs.RCR1.all=0x0; McbspbRegs.XCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Transmit) McbspbRegs.XCR1.all=0x0; McbspbRegs.XCR2.bit.XDATDLY=1; McbspbRegs.RCR2.bit.RDATDLY=1; McbspbRegs.SRGR2.all=0x2000; // CLKSM=1, FPER = 1 CLKG periods McbspbRegs.SRGR1.all= 0x001D; // Frame Width = 1 CLKG period, CLKGDV=29 McbspbRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator DELAY_US(2); // Wait at least 2 SRG clock cycles McbspbRegs.RCR1.bit.RWDLEN1=0; // 8-bit word McbspbRegs.XCR1.bit.XWDLEN1=0; // 8-bit word McbspbRegs.SPCR2.bit.XRST=1; // Release TX from Reset McbspbRegs.SPCR1.bit.RRST=1; // Release RX from Reset McbspbRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset EDIS; }编辑器为CCSv7 在mcbsp发送时数据放于寄存器低八位,如下代码所示,0xf0为测试用 BOOL Mcbsp_Write(BOOL data) { McbspbRegs.DXR1.bit.LWHB=0xF0; McbspbRegs.DXR1.bit.LWLB=data; while(McbspbRegs.SPCR2.bit.XRDY==0); while(McbspbRegs.SPCR1.bit.RRDY==0); BOOL res = McbspbRegs.DRR1.bit.LWLB; return res; } void MCP23S09_Write(BOOL regAddr, BOOL data) { GpioDataRegs.GPADAT.bit.GPIO15=0; Mcbsp_Write(0x40); Mcbsp_Write(regAddr); Mcbsp_Write(data); GpioDataRegs.GPADAT.bit.GPIO15=1; } BOOL MCP23S09_Read(BOOL regAddr) { BOOL data=0; GpioDataRegs.GPADAT.bit.GPIO15=0; Mcbsp_Write(0x41);//读指令 Mcbsp_Write(regAddr); data = Mcbsp_Write(0xff); GpioDataRegs.GPADAT.bit.GPIO15=1; return data; } BOOL MCP23S09_Init(BOOL data) { BOOL res =0; MCP23S09_Write(0x05,0x20);//按字节写 MCP23S09_Write(0x00,0x00);//配置为输出模式 MCP23S09_Write(0x06,0xFF);//配置为上拉 MCP23S09_Write(0x0A,data);//写入测试数据 res = MCP23S09_Read(0x09);//读取测试数据 if(res == data) return TRUE; else return FALSE; }希望可以帮助到你
技术教程
# 单片机
# 嵌入式
寒域
4月1日
0
5
0
2025-04-01
关闭STM32CUBEIDE自动更新
因STM32CUBEIDE每次更新会导致之前安装的汉化插件或者是自动补全等插件失效,折腾一次后便不再想折腾,所以关闭更新是个不错的选择,以下为相关操作步骤: 打开 STM32CubeIDE。 在顶部菜单栏中,选择 "Window(窗口)" > "Preferences(首选项)"。 在弹出的窗口中,选择 "Install/Updata" > "Automatic Updates" 。 取消勾选 取消勾选图片
技术教程
# STM32
# 单片机
# 嵌入式
寒域
4月1日
1
4
0