|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
8 H/ P7 e+ o1 N! s/ O* D4 C" Fvoid PSCInit(void)8 b; h: k q7 T
{
: p8 V1 O& p. `* x PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ U2 W$ M- A- O( ^& ?/ n- `}
7 G9 ]( ~7 B. j k/ |
8 V! I5 q a J! C- xvoid GPIOBankPinMuxSet(void)# X; F( C- R. W+ M
{2 [+ |6 ?7 [3 P; Y
// DRDY ------------ GPIO6[14] -- 111
( @7 Y. R& K _1 [ // SPI1_CLK ------------ GPIO2[13] -- 46
- d _: p/ G( w! ? // SPI1_SOMI------------ GPIO2[11] -- 44
6 v$ T m% y9 K // SPI1_SIMO------------ GPIO2[10] -- 43 |7 b7 J& h( h( ^) P/ r- ~
// SPI1_CS2 ------------ GPIO1[0] -- 17' E/ y0 y- Z' L! d
// SPI1_CS3 ------------ GPIO1[1] -- 18
6 Q j+ v: e l4 _0 v+ ~/ V# P% M; A) _3 p5 n' U8 N; v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) R8 l/ \. h* ?) v2 A% A2 ^
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);) y$ B. f5 d$ j9 W9 ~) k2 F6 C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ ^2 U& Q# q3 v- S
/ z) @. D8 ]8 v5 U2 t
//DRDY' R1 X* d4 }9 }6 p7 v
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
- l/ w" @( ? j3 ]8 i# y d% L6 m) U // CS2,CS34 ^- O6 w5 k! q+ ~/ J5 M/ J
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2 ?. @2 U8 ?. @" K
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ M0 B" Y' X& _1 f$ @$ d v
//SIMO
2 {: @' _! U4 `7 a6 Y; [4 ?- a1 Z( ? GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ c) G: F4 Z% d9 l( _% W9 T //SOMI8 \4 h3 P. x k# p( j5 ?; R
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 H x( f7 W( l' D( b: o( u3 {4 | //CLK
6 y4 Z% ^0 T. Y' z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
& B6 z3 ~3 ^+ E8 Y4 K! U
+ Y. O E8 q- B% J4 j // LDAC
. T; Y6 i/ D) ]# K# Y# p GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
- Y+ q0 Y' m2 X$ t t- f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" u E3 M; L2 ?5 B7 j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) w, |% l% e+ D5 y& V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS35 y9 x' n2 L2 z# ~" o2 w9 p/ O
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: F. L, ]4 k1 ]}6 Q5 Z/ h" f) W3 D+ d' a
* d( Y; y- _( S. j7 N
int main(void)
5 T$ {% @3 B* |7 s# \& G{! s; Y/ V7 {0 c4 |8 h8 E
// 外设使能# \/ B P. `5 X/ W" M. E* r
PSCInit();" I% W3 w/ ~2 J" B( y& x% J
3 u; ?. a/ l5 a/ s' ^
% P8 C) i% \2 w1 [7 } // 管脚复用配置
/ [1 O5 m {# Y1 ^ GPIOBankPinMuxSet();- I" v, c" X0 f. W
for(;;)
% S7 E6 q" ?; K5 F4 f n {8 c- B9 R! m, F# S
SET_SCLK();//时钟正常输出
# Z8 M; E7 v, F- ]& T- ?# ? GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. ?8 f: L1 H' g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
: y) {3 S) S; }+ b# V; M GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 i6 d$ z! J7 {9 |7 |6 l5 a8 v# U. n: x0 _" n' R
delay(20);
0 S+ n5 Q. y, X# V9 f CLR_SCLK();
0 m+ r0 p3 [7 j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, F' Q( u2 M- E& D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
9 H5 M' _3 \7 [" e6 b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 d1 ^% e1 J) A. x. ` delay(20);
* u# T$ C3 X) L# @. e }
9 w2 y' N* I! i. ]}
' j1 b9 Q! P/ e! Y, R |
|