Re: [问题] 有关于MCU去改某颗IC暂存器之值

楼主: kikiqqp (喵食罐头)   2013-07-17 11:09:54
举例 有一颗使用SPI通讯的 ADC
他的命令方式是
http://images.plurk.com/d7li-6YnNNlTPMCq7nnLMgjUdDx.jpg
.h会这样写(以下为虚拟码)
#define READ 1
#define WRITE 0
#define SYS 0 //RW传8bit
#define ADC 1 //RW传16bit
#define ADO0 2 //R传24bit
#define ADO1 4 //R传24bit
#define TS 6 //R传16bit
....etc
由这样可以知道命令为8位元资料
例如下SYS读取
则只要送出
0b10000000接着送8bit的clock把资料拖回来
那程式我只要写
if(ADC_COMMAND(READ, SYS, false))
{
8bit读取放在这
}
就快快乐乐的下好命令等著抓资料了
函式为
bool ADC_COMMAND(const unsigned char RW,
const unsigned char Adds,
bool CNCR)
{
if(Adds >= 0b1000)
return false; //传输命令不合法
volatile int Commd = 0;
Commd = Adds << 4;
if(CNCR)
BSF(Commd, 3);
if(RW)
BSF(Commd, 7);
ADC_CSLOW();
SPI_TxBuffer = Commd; //送出
while(GETBIT(SPI_SET1, SPI_TxBF)); //等待送出完成
ADC_CSHIGH();
return true;
}
※ 引述《Acekirisame (达陆趁现在!)》之铭言:
: 如前题,这段时间在忙其他工作,尚未对MCU CODING
: 但是这段时间还是有陆续问有在接触MCU的同学问问题,
: 也感谢之前K版友的详细回复,现在我目前想确认之前的
: 一些问题,如下网址里面的图,这是MCU欲控制的IC,这是
: 该IC里面的一些暂存器(有包含位址跟读写,后面的SPEC
: 还有说明各BIT的作用)
: http://i.imgur.com/2iH0YFZ.jpg
: 写C++时,我参考K版友的参考CODE后我定义了上述暂存器:
: #define SYSTEM (*(unsigned int *)0x01)
: #define SYSTEM_OPER (*(unsigned int *)0x02)
: #define EXTERNAL_MOS (*(unsigned int *)0x03)
: #define WAKE_UP_SOURCE_DFM_SET (*(unsigned int *)0x04)
: #define DFMONITOR (*(unsigned int *)0x05)
: #define WATCHDOG_CONF (*(unsigned int *)0x06)
: #define RESERVED_W (*(unsigned int *)0x07)
: #define LINBITS_SET (*(unsigned int *)0x08)
: #define DRV_SET (*(unsigned int *)0x09)
: #define RESRVED (*(unsigned int *)0x0A)
: #define TEST_STAT (*(unsigned int *)0x0B)
: #define WATCHDOG_REFRESH (*(unsigned int *)0x0F)
: #define WAKE_UP_SOURCE (*(unsigned int *)0x11)
: #define LAMP_STAT (*(unsigned int *)0x12)
: #define PH_SENSE (*(unsigned int *)0x13)
: #define WD_TS_RES_CNT (*(unsigned int *)0x14)
: #define DEVICE_INFO (*(unsigned int *)0x1F)
: 不知道这样定义后对不对,假使是对的话,我就会开始用他们的
: 内建的SPI INTERFACE去读写该颗IC的暂存器的值,
: 不过要了解他们的library的SPI传送资料的副程式又是另一个问
: 题了...
作者: Acekirisame (达陆趁现在!)   2013-07-17 11:26:00
正在吸收! 感谢回复!不好意思 请问BSF这个函式还有一些SPI的函式是.h档里面的东西吗? 这样是不是各家的library的用法都不一样呢?
楼主: kikiqqp (喵食罐头)   2013-07-17 17:30:00
把某一位元设为1看图应该猜的出来BSF在做啥吧 = =
作者: Acekirisame (达陆趁现在!)   2013-07-18 00:26:00
有看懂,就是把原本define的数字左移四位 再把RW跟CNCR的判断式给写入变成SPI COMMAND 8BITS格式输出
作者: ruemann (路人甲)   2013-07-18 00:47:00
SPI只是传输的方法 里面的资料格式由各家厂商定义看厂商高兴怎么订就怎么订
作者: Acekirisame (达陆趁现在!)   2013-07-19 16:08:00
好 正在study,最近问了不少问题,有点拨云见日的感觉

Links booklink

Contact Us: admin [ a t ] ucptt.com