|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# j& Y/ H/ R3 ~# y2 N+ I8 G
void PSCInit(void)! |6 Y5 a7 w* z4 @. c; D6 d$ O
{) s' b& M0 P- f( e) o) t7 z
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); o) l& v0 W7 d; q$ P$ e4 b
}
& G# U: Y/ ?; R3 z" O1 s* S8 ^" T! y7 u7 p, h5 d, A
void GPIOBankPinMuxSet(void)6 ]6 z& `. U8 X5 n7 M
{
$ I; E+ M# k) s) V9 q. F* I2 ?# Z // DRDY ------------ GPIO6[14] -- 111
, X0 d7 Q$ O8 R" {( w6 ] // SPI1_CLK ------------ GPIO2[13] -- 46
2 I. G O) ?; s. c$ j7 s' \ // SPI1_SOMI------------ GPIO2[11] -- 44
, ~$ Y4 [" c$ L7 V& x( X // SPI1_SIMO------------ GPIO2[10] -- 432 D, F) z) f# T/ ?9 v7 N( Z o: B4 {, }
// SPI1_CS2 ------------ GPIO1[0] -- 17
- s' X! q5 O( \# t+ n // SPI1_CS3 ------------ GPIO1[1] -- 18
- o8 F* _/ R8 Y* y
1 M4 g# {7 P0 V: m$ J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
, _8 r, R% q9 n% x, p2 g" L3 [) F$ K2 E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 y& L! o+ O2 n0 ~% X* o+ R$ j: | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);* I2 h4 d' Z2 J
) [4 O" X( D) n9 J* B
//DRDY
& P$ X) W- p! V5 ?3 q) W8 t% J GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 b5 g0 C" j7 \6 E6 c, Y# n; B: c // CS2,CS3( |; G+ f- ~( ]- r- {6 K, p, h
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 Z+ f; Y |1 n& y
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& b* P! r; V, z; t/ u) T //SIMO5 J! @( x# {1 P( K
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO5 d: K' g9 n0 t- B1 H* I/ s
//SOMI. R) q, ~& \; }0 K6 w9 m4 n
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ Z# z' l) W+ u5 P+ ^
//CLK
$ w- `# |% @; o# j GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
6 \ Z4 m4 G# S3 w8 u/ l
$ o* m5 S+ V+ l3 }- e // LDAC9 Z8 V$ t6 S% [9 E. V
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 B z, L9 P' Y! X$ Z) j* ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 z/ S. J7 t& w$ H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) [# {; `% s. {' F: f& v: x7 h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ a* b1 [5 ~. y9 C6 H GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- T7 T2 {+ M- Z2 s0 k/ R# w" y- L}
9 q8 D8 n( @2 d( y2 s" t7 |
+ F3 c' v; U7 g' n, C* Cint main(void)" E2 E. V, l, F
{
- `' s8 P- g1 _# B5 `) p4 g // 外设使能
; v& o% `1 a, y; [7 c PSCInit();
. \7 O3 G9 a! q5 f9 |
z' h; L9 J$ p
' n7 g0 ~* J# @% d2 K0 D // 管脚复用配置1 K: @9 R% `. `- f" V3 `8 O4 S
GPIOBankPinMuxSet();9 Q4 d+ ~* p- l) {8 d5 R# c
for(;;)
7 N1 B- K- K+ C8 M {6 ^3 I$ G) O3 u) A' r
SET_SCLK();//时钟正常输出
; v% R1 c8 A6 P6 W- f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 A9 w' @0 L1 r5 F# J0 F1 Z( |
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
8 |& I# d) ^$ j$ e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
: j/ s8 ~7 \- V0 N \
% p* E% R9 G9 f# ] delay(20);
$ J) S6 G- H) g! E& F- Z- R- |- ?8 v CLR_SCLK();
! r6 c) f. _* Q5 S: k" | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' U) J: u& d! w2 k2 T+ Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 E2 e7 r- x# \4 z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% f% A+ x8 a4 h. t& \# F
delay(20);
. [3 u- @. z3 j }
0 A5 Z- l- ?5 K' O}8 Q% p' o0 I! X6 M7 s1 T, s
|
|