|
|
使用下面的例子代码,不能使SIMO和CS为低电平:- d) H% B/ u& H) o. o- @
void PSCInit(void)2 I; A5 n; A- j# n2 W. ^
{
' _, q2 }' \! D& P% y# O! n5 r PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
& Q3 z$ l1 E$ P6 F6 `7 _2 s: {( H}/ ?1 x4 U- J; O$ A
3 R$ p* b4 ~8 \2 G% f
void GPIOBankPinMuxSet(void)
+ }( D A9 x/ G$ y! b0 a{7 o: n1 X8 ?, S. Q- \
// DRDY ------------ GPIO6[14] -- 111
1 W2 b7 T) N/ c& u$ d* A8 |1 \ // SPI1_CLK ------------ GPIO2[13] -- 46) A/ Y& M5 y7 t5 m/ v) f2 `2 s3 h
// SPI1_SOMI------------ GPIO2[11] -- 44" E: n1 d0 ~ I8 X( t9 @% x0 r
// SPI1_SIMO------------ GPIO2[10] -- 43
/ G1 l/ ]! C: a+ W& g/ B6 [ // SPI1_CS2 ------------ GPIO1[0] -- 17
" t% m" w& K" d, U // SPI1_CS3 ------------ GPIO1[1] -- 18
1 w1 B+ D6 w2 Z9 p6 i$ y- E7 F2 o8 d. s" ?7 C, h! A* g& @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
" x& O; ~4 k: r HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ K8 P; @8 h& J$ m# J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( {- g+ w0 s" N' v6 E- d" U% i3 d% m" a N6 ?: ?
//DRDY
% }: y) Y! r/ e( c3 F# D% S, X: Y GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY5 n* s2 F0 r/ V1 D; f
// CS2,CS3% h5 q! ~, R% j! s2 J4 n2 G
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) @* J9 v; h6 j1 e2 T. ]* I GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ O# P- X N: P- }2 ?, a5 t7 Y //SIMO' K+ D+ n, ~3 T( G
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
; u6 P- N) X2 H& d //SOMI
( o5 y& p" r# A$ E, z9 k GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ h' `+ u3 _, }0 Q& D# d2 D
//CLK& T H3 r" A; _4 }7 k; M! X a
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
8 F# x% o- Q5 X& B# K7 V9 j
4 R) p- L/ m2 C7 C# W // LDAC
! F0 w2 T1 K" h GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
/ R3 Z0 p2 L+ x5 G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, d2 R, p1 [7 l( N2 Y) J; `
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 P* a. S) l# M7 B* g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( H; ~- W. G: ?. z; f# d* R% n GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY3 f4 g8 P, G# q
}; R3 ~7 n/ T- ]+ p5 m0 o5 X" c) v+ s( j
% \( h& h& y4 b, G! bint main(void)
: J& o) Y+ p2 B' V$ `# [4 g$ y T{
" K8 K( m7 E5 M/ F- Q$ L; F // 外设使能
2 @1 s) b; ^7 j5 j PSCInit();
* E! ?4 U9 g$ s3 h9 L2 u+ ?( f' O% O$ T# ]2 s
$ l) @ X7 D" q" B6 R. J' [. `$ _' |
// 管脚复用配置
. [% v' Z; q- e* Q! U' \3 l/ l' u GPIOBankPinMuxSet();
7 z1 \9 \( z, X* }7 R) K- C% m for(;;)5 ~* q, ^& v+ W2 b
{" Q/ B8 G' c8 K- r( p8 b
SET_SCLK();//时钟正常输出
7 s. e) W R3 g8 Z+ o6 A( _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 a- b( h9 E4 n- |/ p6 o' `# a5 L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3# v6 `0 i, |+ `9 `4 B$ V0 \* B. h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ G$ S1 B* r; ]7 C! Y
( G) @, [7 y# y. X" T0 ~- k. w delay(20);
t3 q. o7 b* P5 @' u7 `: ]3 q/ [# |, A CLR_SCLK();
* x; [5 M3 n6 v9 N' |/ G1 I GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 q* G6 l9 s' ^' X& z. E" v0 U GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
s9 p0 B1 [2 P5 U+ h0 S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' o) x( v# ^6 {2 t/ y6 w+ c( S' g
delay(20);
{' T- b+ y) J& Y. k }) R M0 o3 n; {: C. u& {
}0 O" e. j% Q2 t5 e8 N3 i
|
|