|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ n" {: V8 y# Uvoid PSCInit(void)
, f: T: W8 ?7 b. S% h n* f{9 S `. I% W1 z- p
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; o6 [2 E9 D% {( v% J}
: I7 N$ h( q8 x6 \3 z! P4 k+ }+ U$ E: a
void GPIOBankPinMuxSet(void)
8 H4 q1 o6 l; E, V0 k) k# h, s{6 } a+ o/ O8 z0 _: U- y" D
// DRDY ------------ GPIO6[14] -- 111 m7 Z/ d) J9 a1 \7 k8 K% _" j
// SPI1_CLK ------------ GPIO2[13] -- 46; w# z4 ?6 n' C7 g- T0 G
// SPI1_SOMI------------ GPIO2[11] -- 443 Y2 N' N$ Y; H I& m3 ^8 i
// SPI1_SIMO------------ GPIO2[10] -- 43
7 x+ a' r% a. w K& w2 T // SPI1_CS2 ------------ GPIO1[0] -- 17
4 q6 b( `) M5 r' S/ X // SPI1_CS3 ------------ GPIO1[1] -- 18. B2 K% ~# D( l1 }& F; }1 A" s
+ E; q2 R6 I6 e- x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
) i/ ]% @( G" G6 w. _1 ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);. g* O: y) { X
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, @6 i7 y% d; _; j1 @
! }3 a# H' B% G# n* R //DRDY
! G- X7 J' K) i5 T$ O5 [! y3 s3 b GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY R: A$ j) @( L
// CS2,CS3$ j+ v3 i+ `6 ~ P5 Y
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
4 @8 ~; t: J7 U& K, H GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
" r* ] M* u: v6 L+ B //SIMO+ W- e7 _* Y% [8 X) B
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 Z7 x* [- q. M* z" |4 W" r" l
//SOMI
$ U3 C$ [; |; ]; I8 ~2 | GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI; W2 ?% K0 z/ N
//CLK
5 B6 M n6 r R+ ]1 A: z. } GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK. q. _) p+ ~/ k! C' f" s
- D2 L$ I8 T0 w // LDAC; x$ l3 B# f% ?# E( `1 W3 @
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK8 c' h' j3 u- x+ G* L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. M1 e. A) ~/ r3 ?- L7 W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ {$ x( E) w' C9 s7 z. @5 N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. H2 t' z( k9 }1 Q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 `2 J8 E+ L5 h! s. s1 R* H$ Y n. C
}# W4 x8 v6 [1 Q) X. @6 Z% G1 ~
6 F2 {$ c7 b# c/ @# m; Y
int main(void): Z! s& T w, g7 _5 L: ]
{) ~7 F, G& [ I) [
// 外设使能
# E9 d+ |# a: m4 K+ F4 Q+ w PSCInit();
& J! x% k/ D7 ^3 }
) H5 u) E& K" G) T
7 n' b: J: u; K) d$ c // 管脚复用配置( Z$ t$ k! y! i0 X- }( t
GPIOBankPinMuxSet();
% ^5 g5 P' f2 f for(;;)
! Y1 ]$ h/ C) W4 Z6 |" s- u9 G/ u5 c {
8 z( L8 r2 c5 L: n4 y SET_SCLK();//时钟正常输出) w# [; l( Z# o% k2 G& s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; ?4 U/ k1 w3 c7 p- a! S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 t/ l7 p7 K6 V- { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 }4 |4 n2 X' `2 R( V5 Z7 A! H* X+ }( i( p
delay(20);
, ^; Y& R S) c5 d" ^ CLR_SCLK();
! ?; C) L1 G, p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
; e9 g1 R+ S6 _& Z# |3 U GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
. q( C! q t* d4 h' q) [ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 @4 D+ @0 M" r; V/ c: F, F6 K V2 s
delay(20);
* S* Z% i; a% _% F. G }
/ p7 n1 C$ m4 a}
( P! r! l( Z$ a% } |
|