专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
LM3s1138SPI接口的AD例程
2019-03-23 22:19
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
7475
13
1582
请问哪位有1138的SPI接口AD例程,供小弟学习一下,谢谢! 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
dyphhl
2019-03-24 18:06
void init(void) // 芯片初始化子程序
{
unsigned long ulBitRate = TheSysClock/10; // 配置SSI时钟为2MHz
SysCtlPeripheralEnable( DAC_PERIPH ); // 使能GPIO外设
GPIOPinTypeGPIOOutput(DAC_PORT, CS ); // 设置 GPIO为输出口
GPIOPinTypeGPIOInput(DAC_PORT, EOC ); // 设置 GPIO为输出口
GPIOPadConfigSet(DAC_PORT, CS , GPIO_STRENGTH_8MA, // 配置GPIO驱动电流,弱上拉输出
GPIO_PIN_TYPE_STD_WPU);
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI); // 使能SSI模块
SysCtlPeripheralEnable(SSICLK_PERIPH); // 使能SSI0接口所在的GPIO端口
SysCtlPeripheralEnable(SSIRX_PERIPH);
SysCtlPeripheralEnable(SSITX_PERIPH);
GPIOPinTypeSSI(SSICLK_PORT, SSICLK_PIN); // 将相关GPIO设置为SSI功能
GPIOPinTypeSSI(SSIRX_PORT, SSIRX_PIN);
GPIOPinTypeSSI(SSITX_PORT, SSITX_PIN);
SSIConfig(SSI_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, ulBitRate, 12);// SSI配置:基址,协议格式,主模式,位速率,数据宽度
SSIEnable(SSI_BASE); // 使能SSI收发
CS_H;
}
int wait() // 等待传输完毕
{
if((HWREG(SSI_BASE+SSI_O_SR)&0x00000010)==0x00000010)
return 1;
else
return 0;
}
int ADC2543(unsigned int cmd) // AD控制子程序,读取上一次AD值,并开始下一次转换
{
unsigned int result=0; // 定义两个整型变量,并将其中一个result初始化
unsigned long pulData;
cmd <<=4; // 左移四位,低四位数据进行通道选择
CS_L; // 片选为低
SSIDataPut(SSI_BASE,cmd); // 发送通道选择命令
while(wait()); // 等待传输完毕
SSIDataGet(SSI_BASE,&pulData); // 读取AD转换的数据
while(wait()); // 等待传输完毕
while(!GPIOPinRead(DAC_PORT,EOC)); // 等待AD转换完成
CS_H;
result=(unsigned int)(pulData); // 数据类型转换
return result&0x0FFF; // 返回数据
}
int main(void) // 主函数main
{
static float value; // 定义一个浮点型变量
jtagWait(); // 防止JTAG失效
clockInit();
init(); // 调用芯片初始化子程序
while(1) // 无限循环
{
value = ADC2543(0)*5.0/4095; // 处理从AD读回的数据,得到实际的模拟量
delay(50000); // 设置断点,观察变量value的数值,长延时
}
}
加载中...
查看其它13个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
{
unsigned long ulBitRate = TheSysClock/10; // 配置SSI时钟为2MHz
SysCtlPeripheralEnable( DAC_PERIPH ); // 使能GPIO外设
GPIOPinTypeGPIOOutput(DAC_PORT, CS ); // 设置 GPIO为输出口
GPIOPinTypeGPIOInput(DAC_PORT, EOC ); // 设置 GPIO为输出口
GPIOPadConfigSet(DAC_PORT, CS , GPIO_STRENGTH_8MA, // 配置GPIO驱动电流,弱上拉输出
GPIO_PIN_TYPE_STD_WPU);
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI); // 使能SSI模块
SysCtlPeripheralEnable(SSICLK_PERIPH); // 使能SSI0接口所在的GPIO端口
SysCtlPeripheralEnable(SSIRX_PERIPH);
SysCtlPeripheralEnable(SSITX_PERIPH);
GPIOPinTypeSSI(SSICLK_PORT, SSICLK_PIN); // 将相关GPIO设置为SSI功能
GPIOPinTypeSSI(SSIRX_PORT, SSIRX_PIN);
GPIOPinTypeSSI(SSITX_PORT, SSITX_PIN);
SSIConfig(SSI_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, ulBitRate, 12);// SSI配置:基址,协议格式,主模式,位速率,数据宽度
SSIEnable(SSI_BASE); // 使能SSI收发
CS_H;
}
int wait() // 等待传输完毕
{
if((HWREG(SSI_BASE+SSI_O_SR)&0x00000010)==0x00000010)
return 1;
else
return 0;
}
int ADC2543(unsigned int cmd) // AD控制子程序,读取上一次AD值,并开始下一次转换
{
unsigned int result=0; // 定义两个整型变量,并将其中一个result初始化
unsigned long pulData;
cmd <<=4; // 左移四位,低四位数据进行通道选择
CS_L; // 片选为低
SSIDataPut(SSI_BASE,cmd); // 发送通道选择命令
while(wait()); // 等待传输完毕
SSIDataGet(SSI_BASE,&pulData); // 读取AD转换的数据
while(wait()); // 等待传输完毕
while(!GPIOPinRead(DAC_PORT,EOC)); // 等待AD转换完成
CS_H;
result=(unsigned int)(pulData); // 数据类型转换
return result&0x0FFF; // 返回数据
}
int main(void) // 主函数main
{
static float value; // 定义一个浮点型变量
jtagWait(); // 防止JTAG失效
clockInit();
init(); // 调用芯片初始化子程序
while(1) // 无限循环
{
value = ADC2543(0)*5.0/4095; // 处理从AD读回的数据,得到实际的模拟量
delay(50000); // 设置断点,观察变量value的数值,长延时
}
}
一周热门 更多>